快速排序及C語言實現

2021-06-26 18:59:55 字數 676 閱讀 1266

快速排序演算法最壞複雜度很差,相當於插入排序,但是平均效能很好,甚至大多數時候優於堆排序和歸併排序,並且是一種內排序演算法,因此在實際中往往用的最多。

快速排序的步驟:將陣列a[p...r]劃分為兩個子陣列a[p...q-1]和a[q+1...r],使得前者的每個元素小於等於a[q],後者的每個元素大於等於a[q]。然後再遞迴呼叫函式,對這兩個子陣列進行快速排序即可。

#include void quicksort(int *a,int p,int r);

int partition(int *a,int p,int r);

main()

; int i;

//printf("%d\n",partition(a,1,8));

quicksort(a,1,12);

for (i = 0;i < 12;i++)

printf("%d ",a[i]);

printf("\n");

}void quicksort(int *a,int p,int r)

}int partition(int *a,int p,int r)

} temp = a[i];

a[i] = a[r-1];

a[r-1] = temp;

return i+1;

}

C語言實現快速排序

快速排序,是氣泡排序的改進,通過尋找 中間元素 在一趟排序中,把比 中間元素 小的數放到左邊,比 中間元素 大的數放到右邊,如此遞迴,最終得到排序結果。include define num 5 void quick sort int a,int left,int right void swap in...

c語言實現快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽結束...

快速排序 C語言實現

以前使用rm時,ruby指令碼提供乙個sort函式,可以把陣列進行排序,後來得知採用的演算法是快速排序。隨著資料結構課程的學習,快速排序如今也不再神秘,如下 using namespace std void quicksort int a,int low,int high int first low...