题解 | #争夺前五名#
争夺前五名
https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14
#include <stdio.h> void QuickSort(int* a, int left, int right) { if (left >= right) return; int povit = right; int key = a[povit]; int begin = left; int end = right; while (end > begin) { //左找小右边找大 while (end > begin && key <= a[begin])//左 begin++; a[povit] = a[begin]; povit = begin; while (end > begin && key >= a[end])//右 end--; a[povit] = a[end]; povit = end; } povit = end; a[povit] = key; QuickSort(a, left, povit - 1); QuickSort(a, povit + 1, right); } int main() { int n, i; scanf("%d", &n); int a[100] = { 0 }; for (i = 0; i < n; i++) { scanf("%d", &a[i]); } QuickSort(a, 0, n - 1); for (i = 0; i < 5; i++) { printf("%d ", a[i]); } return 0; }