您的位置:首页 > 其它

手写个快速排序

2017-11-08 21:05 260 查看
思路就是选择一个基准数字,然后把比这个数字大的放在他右边,小的放在他左边,直到区间内只剩下最后一个数为止,详细的还是去看大佬的吧,我只是写了一下。

代码:

#include<bits/stdc++.h>

using namespace std;

const int maxn=10005;

int a[maxn];

int n;

void quicksort(int left, int right)

{

    int i, j, temp;

    if(left > right) return;

    temp = a[left];

    i = left;

    j = right;

    while(i != j)

    {

        while(a[j] >= temp && i < j) j--;

        while(a[i] <= temp && i < j) i++;

        if(i < j) swap(a[i],a[j]);

    }

    a[left] = a[i];

    a[i] = temp;

    quicksort(left, i - 1);

    quicksort(i + 1, right);

}

int main()

{

    while(scanf("%d", &n) &&n)

    {

        for(int i = 1; i <= n; i++) scanf("%d", &a[i]);

        quicksort(1, n);

        for(int i = 1; i <= n; i++) printf("%d\n", a[i]);

        printf("\n");

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  快速排序