說明
之前說過軸的選擇是快速排序法的效率關鍵之一,在這邊的快速排序法的軸選擇方式更加快了
快速排序法的效率,它是來自演演算法名書
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...