第一次實際實現快速排序。。。,
雖然之前理解其思想方法,但程式設計實現過程中仍出現了很多問題
比如,區分一次快排和遞迴實現整體排序;遞迴時要注意遞迴終止條件(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 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...