纯C,写个快排

图片整理

http://www.nowcoder.com/questionTerminal/2de4127fda5e46858aa85d254af43941

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

const int maxnum = 1024;

void qs(char d[], int left, int right)
{
    if (left < right) {
        int a = d[left];
        int l = left;
        int r = right;

        while (l<r) {
            while (l<r&&d[r]>a) r--;
            if (l<r) {
                d[l] = d[r]; l++;
            }
            while (l<r&&d[l]<a) l++;
            if (l<r) {
                d[r] = d[l];r--;
            }
        }
        d[l] = a;
        qs(d, left, l - 1);
        qs(d, l + 1, right);
    }

}


int main()
{
    char indata[maxnum];

    while(scanf("%s", indata)!=-1){
        qs(indata, 0, strlen(indata) - 1);
        printf("%s\n", indata);
    }
    return 0;
}
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务