C语言数组及排序算法

02-29 阅读 0评论

数组

类型说明符 数组名[ 常量表达式 ];

C语言数组及排序算法,C语言数组及排序算法,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,比较,第1张
(图片来源网络,侵删)

例  float s[100];  定义了一个浮点型数组 数组名为 s ,此数组有100个元素

[ ]括号内常量表达式应为非0无符号整形表达式

a[10]创造出的10个元素为a[0]-a[9]且元素类型与定义a[10]相同

数组存储具有1.单一性 2.有序性 3.连续性

数组存储方式是以首元素地址为相对地址 通过下标计算偏移量 进行偏移。                               

注意事项:1.使用数组时 下标不能超过定义数组的数。如果超过将会发生越界访问,造成严重大错误。  

C语言数组及排序算法,C语言数组及排序算法,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,比较,第2张
(图片来源网络,侵删)

                2.数组不能整体被引用,也不能被整体打印。

                3.数组的数组名为数组的首元素地址。

                4.定义的[]不是下标运算符,是类型说明符

可以使用{}来进行初始化C语言数组及排序算法

如果{}内没有全部初始化,剩下的数组元素全部补0。

如果初始化数组元素个数 小于 定义数组元素个数 否则将会程序报错 越界

C语言数组及排序算法,C语言数组及排序算法,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,比较,第4张
(图片来源网络,侵删)

可以使用int a[] = {1,2,3,4,5,6,7,8,9,0}来定义整形a数组,数组元素个数为大括号内赋值的个数。

可以用 sizeof(a) / sizeof(a[0]) 来计算数组内元素个数。

排序算法

1.选择排序

指在合适的位置上放上合适的数。

C语言数组及排序算法

选择排序是循环里嵌套了一个循环,一共是两个循环,里面的循环有一个选择语句。

以i = 0 为例 里面的循环是将a[0]的值分别与a[1]~a[4]进行比较,如果a[0]的值大于a[1]~a[4]则将a[0]的值与之交换,一轮循环下来,a[0]里的值将会为最小值。

而外层循环是将a[0]跑完一轮内层循环后将a[0]递增1变为a[1],a[1]在进行内层循环,这样a[1]的值会为除a[0]外的最小值及次小值,外层循环一直到a[3]。两层循环跑完这样就从a[0]开始进行从小到大的排序。

选择循环的算法复杂度为 o(n)=n*n。

2.冒泡排序

是将数组中相邻的两个元素两两比较,小的放前,大的放后。

C语言数组及排序算法

冒泡排序也是两个循环,外层循环 j 从函数长度 -1 即4开始,依次减1 直到等于0

内层循环 i 是从 0 开始 依次加 1 直到等于 j

例 从 j  = 4 开始 i = 0 将 a[i]依次与a[i+1]进行比较,如果a[i] > a[i+1]则将 a[i]与a[i+1]的值进行对换,这样一轮下来,i从0到j=4,a[4]里将会装的是这个数组的最大值,第二轮i还是从0开始,j的值减1,i从0到3 到a[3]结束,内层循环结束a[3]里将会装次大值即第二大的数。外层循环结束,这个数组将会从a[4]开始向左,由大到小进行排序。

3.插入法排序

C语言数组及排序算法

创立一个新数组b[ ] b数组的长度与 a[]相同, 将a[0] 放入 b[0] 接下来有两个循环

例 i = 1 开始 ,将a[1]的值赋给t,然后令j=i,如果b[0]的值大于t=a[1]则令b[1] = b[0] 令j减1 。 j = 0 内层循环条件为假跳出循环,令b[0]=a[1]。相当于a[1]的值如果小于a[0]则令a[1]=a[0]然后将a[1]的值给a[0]。外层循环一次,t = a[2] 如果 a[1] > a[2]则令a[2] = a[1],j减1 ,j为1 ,再进行判断a[0]是否大于 a[2]如果 a[0]>a[2] 则令a[1]=a[0] j再减1为0 跳出循环令 a[0]=a[2]。相当于是i从1开始将i = j ; a[j]与分别与a[j-1]进行比较如果a[j-1]的值大于a[i]则a[j]值=a[j-1] j减1 直到a[j-1]

这样a[i]从左边开始始终放在比左边大比右边小的位置。

二分查找法

C语言数组及排序算法

原数组必须是有序数组

令数组第一个下标为 begin 最后一个下标为 end

mid = (begin + end) / 2。

将要查找的值a[n] 与 a[mid] 进行比较,如果 a[mid] >a[ n ] 则n在 mid 的左边 将 end下标更新为 原来的mid-1

如果 mid

重新计算mid再次跟n比较直到begin


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]