C语言实现冒泡排序法和选择排序法代码参考

时间:2021-04-27 04:20:52

为了易用,我编写排序函数,这和直接在主调函数中用是差不多的。

  我认为选择排序法更好理解!请注意 i 和 j ,在写代码时别弄错了,不然很难找到错误!

冒泡排序法

void sort(int * ar,int k) //ar指向数组名,k是元素个数
{
    int i,j,temp;
    ; i < k - ; i++){ //比较k-1趟就可以了
        ; j < k - i -; j++){
            ]){
                temp = ar[j];
                ar[j] = ar[j + ];
                ar[j + ] = temp;
            }
        }
    }
}
 //第二个循环解释:每趟排序后,ar[k - i - 1]就确定了,也就是j最大时,ar[j + 1]确定了。

选择排序法

 void sort(int * ar,int k) //ar指向数组名,k是元素个数
 {
     int i,j,temp;
     ; i < k - ; i++){ //只要和k-1个元素比较就可以了
         ; j < k; j++){
             if(ar[i] > ar[j])
             {
                 temp = ar[i];
                 ar[i] = ar[j];
                 ar[j] = temp;
             }
         }
     }
 }
 //第二个循环中j = i + 1是为了让ar[j]和ar[i]进行比较,即ar[i + 1]和ar[i],对于第一个循环,如果没有j < k - 1的话,数组就会越界,这需要理解。