快速排序時間複雜度爲O(nlogn)
代碼
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void qsort (int *arr, int left, int right) {
if (left < right) {
int key = arr[left];
int low = left, high = right;
while (low < high) {
for (;low < high && arr[high] > key;high--);
arr[low] = arr[high];
for (;low < high && arr[low] < key;low++);
arr[high] = arr[low];
}
arr[low] = key;
qsort (arr, left, low-1);
qsort (arr, low+1, right);
}
}
int main (void) {
int num;
int arr[100];
while (scanf ("%d", &num) != EOF) {
for (int i = 0;i < num;i++) {
scanf ("%d", &arr[i]);
}
qsort (arr, 0, num-1);
for (int i = 0;i < num;i++) {
printf ("%d ", arr[i]);
}
printf ("\n");
}
return 0;
}