快速排序

来源:互联网 发布:程序员为什么叫程序猿 编辑:程序博客网 时间:2024/05/21 10:37

自己写了一个很挫的程序,勉强能用吧,有时间再改进。

#include <iostream>void quickSort(int a[], int size) {    if (size <= 1) {        return;    }    if (size == 2) {        if (a[0] > a[1]) {            int tmp = a[0];            a[0] = a[1];            a[1] = tmp;        }        return;    }    int povit = a[0];    int j = size - 1;    int i = 1;    int hole = 0;    while (true) {        while (i < j && a[j] > povit) {            j--;        }        if (i < j) {            a[0] = a[j];            hole = j;            while (i < j && a[i] < povit) {                i++;            }            if (i < j) {                a[j] = a[i];                a[i] = a[0];                hole = i;            }            else {                break;            }        }        else {            break;        }    }    a[hole] = povit;    quickSort(&(a[0]), hole);    quickSort(a + hole + 1, size - hole - 1);}int main(){    quickSort(ax, 7);    //mergeSort(ax, 7);    for (int i = 0; i < 7; i++) {        std::cout << ax[i] << ", ";    }    std::cout << std::endl;    while (true);    return 0;}

快速排序最差的时间复杂度为O(N²),最好和平均时间复杂度都是O(NlogN)。

原创粉丝点击