1. 程式人生 > >快速排序——C語言

快速排序——C語言

快速排序是對氣泡排序的一種改進。

其基本思想是:通過一趟排序將待排記錄分割成兩部分,其中一部分記錄的關鍵字均比另一記錄的關鍵字小,則可對這兩部分記錄繼續進行排序,以達到整個序列有序。

程式碼實現:

int partition1(int data[],int low,int high) {     int pivokey,t;     pivokey=data[low];///用子表的第一個記錄作樞軸記錄     while(low<high)///從表的兩端交替向中間進行掃描     {         while(low<high&&data[high]<=pivokey)             high=high-1;///將比樞軸記錄小的記錄交換到低端         t=data[low];         data[low]=data[high];         data[high]=t;         while(low<high&&data[low]>=pivokey)             low=low+1;///將比樞軸記錄大的記錄交換到高階         t=data[low];         data[low]=data[high];         data[high]=t;     }     return low;///返回樞軸所在位置 } void QSort1(int data[],int low,int high) {     int pivotloc;     if(low<high)///長度大於1     {         pivotloc=partition1(data,low,high);         QSort1(data,low,pivotloc-1);///對低子表遞迴排序         QSort1(data,pivotloc+1,high);///對高子表遞迴排序     } }

執行結果:

快速排序最優的情況下時間複雜度為:O( nlogn )