C語言------冒泡排序

冒泡排序是數組作爲參數返回給函數的一個很好例子。

​#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void Swap(int* x,int* y){
    int tmp=*x;
    *x=*y;
    *y=tmp;
}
//如果把一個數組當作函數參數,那麼這個數組會隱式退化成指針
//這個指針就指向了數組的首元素
// BubbleSort(int arr[])相當於BubbleSort(int* arr)
//把一個數組變成有序(升序或者降序)的數組
void BubbleSort(int arr[],int size){
    //printf("hello\n");
    //
    //int len=sizof(arr)/sizof(arr[0]);
    //printf("len=%d\n",len); //len=1
    
    //當前這個排序函數是迫切的需要知道數組中的元素個數的,
    //但是通過sizeof的方式又獲取不到。
    //[0,bound]   已經排好序的空間
    //[bound,size) 待排序空間
    //如果篩選出一個最小的元素放到起始位置了,就可以讓bound++
    //
    int bound=0;  //邊界
    for(;bound<size;++bound){
        //第一重循環需要循環若干次,每次循環篩選出當前待排序
        //區間中最小的元素
        int cur=size-1;
        for(;cur>bound;--cur){
            //這個循環在遍歷待排序區間,進行最小值的篩選
            if(arr[cur]<arr[cur-1]){
                //進行交換
                Swap(&arr[cur],&arr[cur-1]);
            }
        }
    }
}
int main(){
    int arr[]={9,5,2,7};
    int len=sizeof(arr)/sizeof(arr[0]);
    BubbleSort(arr,len);
    system("pause");
    return 0;
}​

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章