冒泡排序的思想
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冒泡排序的思想
第一次: 从一个数组的最后一个元素到该数组的第一个元素进行扫描,比较后一个元素与前一个元素的大小,如果后一个小于前一个,交换顺序。通过这样的交换,那么我们就可以把该数组的最小元素换位到该数组的第一个位置。
第二次: 从该数组的最后一个元素到该数组的第二个元素进行扫描,比较后一个元素与前一个元素的大小,如果后一个小于前一个,交换顺序。通过这样的交换,那么我们就可以把该数组的最小元素换位到该数组的第二个位置。
依次这样的循环。。。。
如果是有n 个元素的话,那么我们就要进行n-1次的冒泡,就可以把该数组从小到大排好序。(但是这样循环的次数太多了,程序的效率比较的低)
你想啊,给你一个排好的数组,你也要这样去循环很多次排序(没必要)。所以我们就设置一个标志量yq ,用它来记录是否发生了交换,也就是说如果有一次不发生交换,那么说明我们的数组的顺序已经排好序了,即结束操作。
具体代码:void bubble(int *pa,int n)
{
int i,j,temp,yq;
for(i=0;i yq=1; for(j=n-1;j>i;j--) if(pa[j] temp=pa[j-1]; pa[j-1]=pa[j]; pa[j]=temp; yq=0; } if(yq==1) return; } } 其实,跟书上差不多,我想这样会好理解一点哈!嘿嘿,先看一下吧!