标签:
为了易用,我编写排序函数,这和直接在主调函数中用是差不多的。
我认为选择排序法更好理解!请注意 i 和 j ,在写代码时别弄错了,不然很难找到错误!
冒泡排序法:
void sort(int * ar,int k) //ar指向数组名,k是元素个数 { int i,j,temp; for(i = 0; i < k - 1; i++){ //比较k-1趟就可以了 for(j = 0; j < k - i -1; j++){ if(ar[j] > ar[j + 1]){ temp = ar[j]; ar[j] = ar[j + 1]; ar[j + 1] = temp; } } } } //第二个循环解释:每趟排序后,ar[k - i - 1]就确定了,也就是j最大时,ar[j + 1]确定了。
选择排序法:
1 void sort(int * ar,int k) //ar指向数组名,k是元素个数 2 { 3 int i,j,temp; 4 for(i = 0; i < k - 1; i++){ //只要和k-1个元素比较就可以了 5 for(j = i+1; j < k; j++){ 6 if(ar[i] > ar[j]) 7 { 8 temp = ar[i]; 9 ar[i] = ar[j]; 10 ar[j] = temp; 11 } 12 } 13 } 14 } 15 //第二个循环中j = i + 1是为了让ar[j]和ar[i]进行比较,即ar[i + 1]和ar[i],对于第一个循环,如果没有j < k - 1的话,数组就会越界,这需要理解。
标签:
原文地址:http://www.cnblogs.com/mrblug/p/5720973.html