快速排序法(三)

2021-08-27 12:44:14 字數 1378 閱讀 1482

說明

之前說過軸的選擇是快速排序法的效率關鍵之一,在這邊的快速排序法的軸選擇方式更加快了

快速排序法的效率,它是來自演演算法名書

introduction to algorithms

之中。

解法

先說明這個快速排序法的概念,它以最右邊的值

s作比較的標準,將整個數列分為三個部份,

乙個是小於

s的部份,乙個是大於

s的部份,乙個是未處理的部份,如下所示:

小於s 大於s 未處理

小於s 大於s

小於s s 大於s

在排序的過程中,i與

j都會不斷的往右進行比較與交換,最後數列會變為以下的狀態:

然後將s的值置於中間,接下來就以相同的步驟會左右兩邊的數列進行排序的動作,

printf("排序前:");

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

quicksort(number, 0, max-1);

printf("\n排序後:");

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

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

printf("\n");

return 0;

}int partition(int number, int left, int right)

}swap(number[i+1], number[right]);

return i+1;

}void quicksort(int number, int left, int right)

}//結果測試

三種快速排序法

交換函式 為了提高效率,當所交換的兩個元素值不相等時,用異或運算 void swap int a,int b else 第一種快排 只有乙個長度n,每次需計算出low和high指標 int quicksort process1 int a,int n a high temp return high ...

快速排序法

一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...

快速排序法

include stdafx.h include vos.h define table mid machine name midmachine define table midmach colname id id define table midmach colname ip ip define t...