c语言入门:排序算法

来源:互联网 发布:电话黄页怎么关闭网络 编辑:程序博客网 时间:2024/06/06 08:26
/** * @brief select_sort 选择排序 * @param arr * @param len */void select_sort(int *arr,int len){    for(int i=0;i<len;i++){        int mix=arr[i];        int index=i;        for(int j=i;j<len;j++){           if(mix>arr[j]){               mix=arr[j];               index=j;           }        }        if(index==i)            continue;        int temp=arr[i];        arr[i]=mix;        arr[index]=temp;    }}/** * @brief select_sort2 选择排序 * @param arr * @param len */void select_sort2(int *arr,int len){    for(int i=0;i<len;i++){        for(int j=i+1;j<len;j++){            if(arr[i]>arr[j]){                int temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }}/** * @brief quick_sort 快速排序 * @param arr * @param left * @param right */void quick_sort(int *arr,int left,int right){    if(left>=right)        return;    int l=left;    int r=right;    int key=arr[l];    while(l<r){        while(l<r&&key<=arr[r])            r--;        arr[l]=arr[r];        while(l<r&&key>=arr[l])            l++;        arr[r]=arr[l];    }    arr[l]=key;    quick_sort(arr,left,l-1);    quick_sort(arr,l+1,right);}/** * @brief insert_sort 插入排序 * @param arr * @param len */void insert_sort(int *arr,int len){    for(int i=1;i<len;i++){        for(int j=i;j>0;j--){            if(arr[j]<arr[j-1]){                int temp=arr[j];                arr[j]=arr[j-1];                arr[j-1]=temp;            }else{                break;            }        }    }}/** * @brief bubble_sort 冒泡排序 * @param arr * @param len */void bubble_sort(int *arr,int len){    int flag=0;    for(int i=0;i<len;i++){        flag=0;        for(int j=0;j<len-i-1;j++){            if(arr[j]>arr[j+1]){                int temp=arr[j];                arr[j]=arr[j+1];                arr[j+1]=temp;                flag=1;            }        }        if(flag==0)            return ;    }}/** * @brief printArr 遍历数组 * @param arr * @param len */void printArr(int *arr,int len){    for(int i=0;i<len;i++){    printf("%d\n",arr[i]);    }}int main(int argc, char *argv[]){    int arr[10]={1,2,11,'a',134,12,59,67,95,6};//    select_sort(arr,10);//    select_sort2(arr,10);    quick_sort(arr,0,9);//    bubble_sort(arr,10);    printArr(arr,10);    return 0;}
原创粉丝点击