欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分治算法-快速排序

程序员文章站 2022-03-24 15:45:26
...

快速排序:大部分人最喜欢用的一种排序算法。

void Quick_Sort(int arr[], int begin, int end){
    if(begin > end) // 跳出递归的条件。
        return;
    int tmp = arr[begin]; // 基准tmp。
    int i = begin;
    int j = end;
    while(i != j){ // 两个哨兵相遇结束循环。
        while(arr[j] >= tmp && j > i)
            j--;
        while(arr[i] <= tmp && j > i)
            i++;
        if(j > i){ // 这里的是两个哨兵都走不动了之后就交换两者的位置。
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }
    arr[begin] = arr[i]; //将找到的相遇的位置与最初的基准交换位置。
    arr[i] = tmp;
    Quick_Sort(arr, begin, i-1); // 递归找前半部分。
    Quick_Sort(arr, i+1, end); // 递归后半部分。
}
相关标签: 笔记 算法