这是选择排序。
就是说,先选出最大的一个,放在数组的第一位(array[0]);然后再选次大的,放在第二位(array[1]),依此类推……
循环中的i 表示已经排好序的元素个数,j从i 循环到n,找出最大的一个(其实是整个数组里第i大的,因为前面已经有i个数排好序了),和array[i]交换
然后i++,相当于这个数值已经被放到合适的位置上,以后不考虑它了,接着排后面的。
i前面的元素都已经排好序了,还管它们干嘛,所以for(j=i;j
如果你不喜欢这样写,你也可以写for(j=i+1;j
这个是冒泡法......
第一层循环是控制已经排号需的数组
第二层循环每循环一次就把一个最大数拍到数组的最前边
所以当第一次循环玩以后 array[0]里就是数组里最大的数
第二次循环的时候就直接从 array[1]开始了 所以就是 j=i
这是选择排序法,详情请参考百度百科http://baike.baidu.com/view/1575807.htm
这个排序是选出最大的数放到数组的前面,第一次循环,选出一个,然后第二次循环的时候,j=i,这样就不用再去判断第一个数的大小了,因为第一个数已经是选择出来的最大数了。明白了吗?举个例子吧,3,2,5,4比较大小,第一步排序后是5,2,3,4,然后第二步比较2,3,4就行,5不用参与到程序中了。
i=j之后才能让array[j]从array[i]开始取值,然后随着j不断增大,将第J+1,j+2,J+3。。。。。到j+n(j+n+1=N)个数与第j个数比较大小。即先让第一个数与后面的数进行比较,在让第二个数与后面的数比较,依次往后类推。
每一次与它之后的一个进行比较,然后将大的数放到小数后,一次后移一个,冒泡法