冒泡排序for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(arr[j+1]<arr[j]) 这个程序是怎样降序排序?

日期:2013-10-12 13:47:26 人气:1

冒泡排序for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(arr[j+1]<arr[j]) 这个程序是怎样降序排序?

楼主,分析如下: for(i=0;i<n-1;i++) //第一个循环,控制完成排序的轮数 for(j=0;j<n-i-1;j++) //第二个循环,控制每轮排序需要比较的次数,其中的n-i-1,为什么要-i,因为冒泡排序每轮过后,都会把最大的放在了数据的后面(升序)或者前面(降序),也就是后面的i个数(或前面的i个数)已经是排好序的了,为减少比较次数,故-i if(arr[j+1]<arr[j]) //这个判断
    A+
热门评论