快速排序(QuickSort)

2022-08-18 10:15:11 字數 1418 閱讀 4077

第一次實際實現快速排序。。。,

雖然之前理解其思想方法,但程式設計實現過程中仍出現了很多問題

比如,區分一次快排和遞迴實現整體排序;遞迴時要注意遞迴終止條件(low

#include "

stdafx.h

"#include

using

namespace

std;

//快速排序(qsort+quicksort)

//一次快排

int qsort(int* list, int low,int

high)

if(low ==high)

list[low] =sepvalue;

return

low;}//

遞迴實現快速排序

//千萬記住:檢查遞迴的終止條件!!!

void quicksort(int* list, int low, int

high)

}void quicksortall(int* list, int

listlength)

intmain()

; quicksortall(list,6);

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

cout

<'';

cout

}

說明:以後涉及到快速排序時,就用該**了!!!

//

quicksort實現從大到小排序

//一次快排+遞迴

//一次快排

int partition(int* list, int start, int

end)

if(start ==end)

list[start] =sepvalue;

return

start;}//

遞迴排序quicksort

void quicksort(int* list, int length, int start, int

end)

}int

main()

; quicksort(list,length,

0,length-1

);

for(int i=0; i)

cout

<'';

cout

}

快速排序由兩部分**組成:

1,主部分:void quicksort(int* list, int length, int start, int end);

2,內含部分:int partition(int* list, int start, int end);

呼叫時,quicksort(list,length,0,length-1);

快速排序 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 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...