快速排序(Quicksort一)

快速排序是实践中最快的已知排序方法,平均性能在O(NlogN),最快在O(N^2)
基本算法是采用分治法
1.将数组根据枢纽或卫兵x,划分成两个子数组,前面的子数组的所有元素<=x,后面的>=x;
2.递归处理两个子数组,递归边界是有0个元素时;
3.合并,无意义,已经排好序了。


以下是最简单的快排实现

function quicksort (A,s,e) {
    if(s==undefined||e==undefined){
        s=0;
        e=A.length-1;
    }
    if(s
#include 
#include 
using namespace std;

int partition(int arr[],int p,int q){
    int x = arr[p];
    int i = p;
    for (int j = p+1; j <= q; ++j)
    {
        if(arr[j]<=x){
            i++;
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    arr[p] = arr[i];
    arr[i] = x;
    return i;
}

void quicksort(int arr[],int p,int q){
    if(px){
            j--;
        }
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    arr[p] = arr[j];
    arr[j] = x;
}
void quicksort2(int arr[],int p,int q){
    if(p

你可能感兴趣的:(快速排序(Quicksort一))