当前位置: 首页 > news >正文

插入排序,二分查找,字符数组 day8

三:插入排序(原地插入排序)O(N^2)

找到位置,用此位置的值与其前面位置的值比较,直到找到合适的位置

	for(i=0;i<len;i++) //要插入的数据{t = a[i];//非原地插入排序可不用t记录位置的值j = i; while(j>0 && a[j-1] > t)//寻找合适的插入位置{a[j] = a[j-1];j--;}a[j] = t;}

四:二分查找

	int n;scanf("%d",&n);int begin = a[0];int end = a[len-1];while(begin <= end){int mid = (begin + end)/2;if(a[mid] > n){end = mid - 1;}else if(a[mid] < n){begin = mid + 1;}else{break;}}int mid = (begin + end)/2;if(begin <= end){printf("found,located in a[%d]\n",mid);}else{printf("not found\n");}

八:字符型的一维数组

一:

主要用途:存放字符串数据 结束标志 // ‘\0’

​ 字符串都是按照字符数组的方式存储 //“hello”---->0 1 2 3 4 5,占六个内存空间,剩下部分补零

	char s[10] = "hello";int i = 0;while(s[i] != 0){printf("%c",s[i]);++i;}putchar('\n');

二:数组大小识别

​ 字符串中 ‘\0’ 也是占空间

	char s1[] = {'h','e','l','l','o'};char s2[10] = "hello";char s3[] = "hello";printf("sizeof(s1) = %ld\n",sizeof(s1));printf("sizeof(s2) = %ld\n",sizeof(s2));printf("sizeof(s3) = %ld\n",sizeof(s3));
结果:sizeof(s1) = 5sizeof(s2) = 10sizeof(s3) = 6

三:字符串操作函数gets/puts

scanf("%s",s); gets/puts

char *gets(char *s); 参数:s代表存放字符串的一块空间的地址 返回值:s

	char s[20] ={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};gets(s);//可能导致缓冲区溢出,使栈int i = 0;while(s[i] !='\0'){printf("%c",s[i]);++i;}putchar('\n');

int puts(const char *s); 参数:s 要输出的字符 返回值:成功返回非负 失败返回-1

​ 输出自带换行

	gets(s);puts(s);

四:strlen //计算字符串长度

字符串长度:‘\0’ 前面字符的个数(不包括\0)

	char s[20];scanf("%s",s);int i = 0;int count = 0;while(s[i] != '\0'){count++;i++;}printf("long = %d\n",count);

size_t strlen(const char *s); //参数:s要统计的字符串 返回值:返回字符串的长度值

#include<stdio.h>
#include<string.h>int main(int argc, const char *argv[])
{char s[20];gets(s);printf("long = %ld\n",strlen(s));return 0;
}

五:strcpy字符串复制

	char s1[] = "hello";char s2[20];int i = 0;while(s1[i] != '\0'){s2[i] = s1[i];i++;}s2[i] = '\0';//保证复制后的字符串有效puts(s1);puts(s2);

char *strcpy(char *dest, const char *src);

​ //参数 @src 要复制的字符 @dest要复制到的目标 返回值:成功返回dest 失败返回NULL

#include<stdio.h>
#include<string.h>int main(int argc, const char *argv[])
{char s1[] = "hello";char s2[20];strcpy(s2,s1);puts(s1);puts(s2);return 0;
}

六:

http://www.xdnf.cn/news/894709.html

相关文章:

  • linux C语言中的动态库 静态库说明
  • 智慧停车设备选型指南:何时应优先考虑免布线视频桩方案?
  • QT中使用libcurl库实现到ftp服务器的上传和下载
  • Debugger encountered an exception:Exception at 0x7ff809232bdc
  • 【6.2-6.9学习周报】
  • [免费]SpringBoot+Vue鲜花销售商城系统【论文+源码+SQL脚本】
  • Spring Boot统一功能处理深度解析
  • 如何设置合适的缓存过期时间(TTL)?是否有必要实现缓存预热?
  • 【PmHub面试篇】PmHub集成Redission分布式锁保障流程状态更新面试专题解析
  • 【inode使用 100%,导致项目异常】
  • 【学习分享】shell基础-参数传递
  • 使用反射对任意对象进行二进制序列化的程序
  • 行内样式:深入解析与应用指南
  • Vue.js应用结合Redis数据库:实践与优化
  • 更改安卓虚拟机屏幕大小
  • ICLR文章如何寻找页码
  • 【高频面试题】快慢指针及相关应用
  • 客户体验数据使用的三种视角——场景视角
  • 等比数列的概念及性质02
  • 沉金电路板工艺解析:从原理到应用的全面指南
  • 2025年06月05日Github流行趋势
  • RK3588 InsightFace人脸识别移植及精度测试全解析
  • 对象数组练习(增删改查)
  • Spring AI(10)——STUDIO传输的MCP服务端
  • 低功耗高安全:蓝牙模块在安防系统中的应用方案
  • 视觉前沿算法复现环境配置1——2025CVPR风格迁移网络SaMam
  • 【element-ui】el-autocomplete实现 无数据匹配
  • 线段树~~~
  • Mentalab Hypersync 可实现多被试同步扫描、多模态研究及无线事件标记的高精度无线同步
  • 《Sora模型中Transformer如何颠覆U-Net》