快速排序 QuickSort 中位數實現

2021-07-04 11:38:16 字數 935 閱讀 2644

注意事項:

quicksort(data, seq, low_org, low-1);

quicksort(data, seq, low+1, high_org);

遞迴函式quicksort中最後遞迴呼叫的時候,因為 中位數的值pivot已經處於陣列中的正確位置,因此 必須採用 low-1 和  low+1,這樣才能不斷減小遞迴呼叫時陣列的長度,否則在陣列中存在兩個相同資料時將產生無限次的遞迴呼叫

#include#includeusing namespace std;

void quicksort(int data, int seq, int low, int high);

int _tmain(int argc, _tchar* argv)

; int seq[10] = ;

quicksort( number, seq, 0, 9 );

for(int i = 0; i < 10; i++)

cout << number[i] << endl;

return 0;

}void quicksort(int data, int seq, int low, int high)

} //tmp = data[low];

//data[low_org] = tmp;

//data[low] = pivot;

//tmp = data[ (low_org+high_org )];

//data[ (low+high)/2 ] = data[low];

//data[low] = tmp;

quicksort(data, seq, low_org, low-1);

quicksort(data, seq, low+1, high_org);

}}

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...