纯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; }