C语言学习:排序

发布时间:2026/7/24 23:47:00
C语言学习:排序 一、选择排序核心思想:给合适的位置选择合适的数算法实现步骤外层循环控制要找的位置 里层循环控制要找的数二、冒泡排序相邻两个数两两比较小的放前面大的放后面三、插入排序将数据插入到已有的序列--数据跟原有序列比较找到合适的位置插入序列1.非原地插入原序列存放在a数组a数组的第一个位置的数据放在b数组的第一个位置然后取a数组中的第二个位置的数跟已经存放在b数组中的序列依次比较找到合适的位置后插入不断重复直到a数组中的数据取完。2.原地插入排序把a数组第i个数据拿出来给t用t跟前一个数比较如果前一个数大就把前一个数的数据给到第i个位置再跟前第二个数比较选择排序、冒泡排序和插入排序比较判断依据--时间复杂度On n^2排序可以方便查找查找的算法二分查找法midbeginend/2;如果要找的数比中间值大则begin右移如果要找的数比中间值小end左移不断变换区间如果一直变换到beginend,则说明没有找到。时间复杂度最好O1最差O(logN);一维字符型数组char s[10];与int型本质上没太大区别主要是想处理多个字符数据四、字符串1.字符串数据处理实际上是按照字符数组的方式处理的hello‘-处理成字符数组chars[10]//10个char元素的数组大小10字节hello-数组的特点处理1连续性2单一性3连续性2.字符串讨论字符串数据我们更关心的是整个字符串而不是字符串中单个字符hello字符数组--成了存放字符串的容器处理字符串数据---也更关心的是字符串啥时候结束而不是数组啥时候结束数组长度显得不那么重要了字符串结束标志--‘\0’3.计算字符串长度size_t strlen(const char *s);功能计算字符串长度参数const char*S---表示需要的是一个字符串的首地址//此处可以传字符型数组的数组名/也可以是个字符串常量hello返回值返回字符串的长度找到‘\0’,输出i字符数组和字符串char s[l0] {‘h’‘l’‘l’‘l’‘o’}://是字符串char s[10]/字符数组其中的数据不能说是字符串4.字符串复制#include string.hchar *strcpy(char*dest const char *src);功能复制字符串将src中字符串复制到dest中参数src//字符串存放字符串的数组名或字符串常量dest//数组名或者是一块存放字符串的空间的地址返回值返回的是dest判断第一个字符串\0的位置不到‘\0’,复制给s2,到了就停止最后把‘\0’也复制过去5.字符串拼接找到第一个字符串的‘\0’把第二个字符串拼接到第二个字符串后面最后‘/0’,也要拼接过去6.字符串比较strcmps1,s2while(s1[i]!/0 s2[i]!\0s1[i]s2[i])i;从左到右比较ASCII码直到遇到不同字符或者‘\0’返回值如果两个字符串相同则返回0如果s1s2,则返回一个正数s1s2则返回一个负数。