完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
冒泡排序是最简单的排序方法,它的计算次数多,不是最快的,但它是最基本的排序方法。
假设有一个整型数组:2,4,9,1,6,3,5,8,10,7; 要求把它们按从小到大的顺序依此排列。它的实现过程如下: 第一轮比较:从数组第一个元素到数组最后一个元素,相邻的两个元素的值进行比较,数组下标小的数的值大于数组下标大的元素的值时,便交换它们的值。如此下来,最大的值便被放到数组最后一个元素上。总共比较9次。 第一轮比较后的数组: 2,4,1,6,3,5,8,7,9,10 第二轮比较::重复上述步骤,相邻两个元素进行比较,但是这时比较的次数只有八次,因为已经确定最大的值是最后一个,所以无需进行比较。这样,第二大的数就排在数组倒数第二个元素上。 第二轮比较后的数组:2,1,4,3,5,6,7,8,9,10 第三轮比较::同样的,比较过后第三大的数排在倒数第三个元素上。 第三轮比较后的数组:1,2,3,4,5,6,7,8,9,10 可以看到经过三轮比较过后数组已经是满足题目要求的了,但是程序还是会继续进行下一轮比较,直到进行完第九轮(数组长度-1)比较后才停止比较。因此冒泡排序法是比较低效的,当数组原本就是有序时尤为明显。 … 最后一轮比较后的数组:1,2,3,4,5,6,7,8,9,10 冒泡排序法具体实现如下: #include 《stdio.h》int main(){ int data[10] = {2,4,9,1,6,3,5,8,10,7}; int tmp; int i, j; for (i=0; i《sizeof(data)/sizeof(int)-1; i++) //外层循环,次数为数组长度减1 { for (j=0; j《sizeof(data)/sizeof(int)-1-i; j++) //内层循环,次数为数组长度减外层循环次数再减一 { if (data[j] 》 data[j+1]) //如果数组下标为j的元素的值大于数组下标为j+1的元素的值 { tmp = data[j+1]; //把数组下标为j+1的元素的值存放在tmp中 data[j+1] = data[j]; //把数组下标为j的元素的值赋给j+1 data[j] = tmp; //原来数组下标为j+1的元素的值赋给j } } } for (i=0; i《sizeof(data)/sizeof(int); i++) { printf(“%d ”, data); } printf(“n”); return 0;} |
|
|
|
只有小组成员才能发言,加入小组>>
2562 浏览 0 评论
1159浏览 2评论
762浏览 1评论
515浏览 0评论
272浏览 0评论
453浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:42 , Processed in 1.724145 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号