最常用的排序演算法——快速排序
阿新 • • 發佈:2018-12-16
最常用的排序演算法,當然是快速排序演算法了,下面給出可以直接執行的快速排序演算法思想和程式碼:
思想:
①一般設定第一個數為基準數;
②先從右往左找一個小於基準數的數,在從左往右找一個比基準數大的數,然後交換他們;
繼續,直到兩邊探測變數“相遇”;
③交換“相遇”位置的數字和基準數位置(即第一個數的位置),從而把基準數放置與中間位置;
④基準數左邊:比基準數小,採用遞迴繼續重複
⑤基準數右邊:比基準數大,採用遞迴繼續重複
話不多說,直接上碼(c語言實現的):
#include "stdio.h" /* * 快速排序演算法 */ int n; int a[100]; void quicksort(); int main(){ int i, j; printf("請輸入待排序的數的個數:"); scanf("%d", &n); printf("請輸入待排序的數列:"); for(i=0; i<n; i++) { scanf("%d", &a[i]); } quicksort(0, n-1); printf("排序後的數列為:"); for(i=0; i<n; i++) { printf("%d", a[i]); } return 0; } void quicksort(int startIndex, int endIndex) { int i, j, t; int temp; //定義基準數 if(startIndex > endIndex) return; temp = a[startIndex]; i = startIndex; j = endIndex; while(i != j) { while(a[j]>=temp && i<j) { j--; } while(a[i]<=temp && i<j) { i++; } if(i<j) { t = a[j]; a[j] = a[i]; a[i] = t; } } //基準數歸位 a[startIndex] = a[i]; a[i] = temp; quicksort(startIndex, i-1); quicksort(i+1, endIndex); return; }
快速排序演算法採用了遞迴的思想。