小甲魚 P36 快速排序
阿新 • • 發佈:2018-12-12
小甲魚 P36 快速排序
#include <stdio.h> void quick_sort(int array[], int left, int right) { int i = left, j = right; int temp;//臨時值 int pivot;//基準點 pivot = array[(left + right)/2];//基準點 while (i <= j) { //從左到右找到大於等於基準點的元素 while (array[i] < pivot) { i++; } //從右到左找到小於等於基準點的元素 while (array[j] > pivot) { j--; } //如果i <= j, 則互換 if (i <= j) { temp = array[i]; array[i] = array[j]; array[j] = temp; i++; j--; } } if(left < j) { quick_sort(array, left, j); } if(i < right) { quick_sort(array, i, right); } } int main(void) { int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109}; int i, length; length = sizeof(array) /sizeof(array[0]); quick_sort(array, 0, length-1); printf("排序後的結果是:"); for (i = 0; i < length; i++) { printf("%d ", array[i]); } putchar('\n'); return 0; }