快速排序C++实现

来源:互联网 发布:赛诺手机数据是啥 编辑:程序博客网 时间:2024/06/06 13:12

快速排序采用分治递归法,将问题分解为一个个小的问题,再递归求之。
大致思想为:
首先对于一个区间L,R,找到一个元素p,将所有大于p的元素全部移动到p的右边,所有小于p的元素全部移动到p的左边,这样就大致将顺序整理了一下,然后对于p左边的区间L1,R1,递归上述方法,右区间同理。

#include <cstdio>using namespace std;void QuickSort(int *arrs, int l, int r){    if(l >= r)        return;    int L = l, R = r;    int key = arrs[l];    while(l < r){        while(l < r && key < arrs[r]){            r--;        }        arrs[l] = arrs[r];        while(l < r && key > arrs[l]){            l++;        }        arrs[r] = arrs[l];    }    arrs[l] = key;    QuickSort(arrs, L, l - 1);    QuickSort(arrs, l + 1, R);}int main(){    int arrs[] = {9, 8, 2, 1, 0, 6, 3};    int len = sizeof(arrs) / sizeof(int);    QuickSort(arrs, 0, len-1);    for(int i = 0; i < len; i++)        printf("%d ", arrs[i]);    printf("\n");    return 0;}
0 0
原创粉丝点击