c语言入门:排序算法


/**
 * @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;
}

猜你喜欢

转载自blog.csdn.net/qq_17827919/article/details/72857904
今日推荐