用到乙個方法,交換兩個數的值
void swap(int *a, int *b)
遞迴實現
void quicksortbyrecursion(int *p, int length) //傳遞陣列指標跟陣列長度
swap(p, right); //把第乙個值跟righ對應的值交換,此時right指向小於中間值的最後乙個數
quicksortbyrecursion(p, right - p); //遞迴小於中間數
quicksortbyrecursion(right + 1, length - (right - p) - 1);//遞迴大於中間數
}}
棧實現建立乙個棧,提供壓棧,出棧等方法
typedef struct stru //棧結構體
st;st *stack=null;
void push(int *p,int len) //壓棧
st* pop()//出棧
int isempty()//判斷是否為空
快速排序棧實現方法
void quicksortbystack(int *p, int len)
swap(p, pright);//把第乙個值跟righ對應的值交換,此時right指向小於中間值的最後乙個數
push(p, pright - p); //把需要在快拍的指標跟長度軋入棧
push(pright + 1, len - (pright - p) - 1);//把需要在快拍的指標跟長度軋入棧
} }}
c語言快速排序 遞迴與非遞迴實現
遞迴 1 先在待排序序列中選擇乙個基準資料,一般常用的就是第乙個資料 2 i,j i從前向後 j從後向前 當i j時,進入迴圈 1 從後向前找第乙個比基準小的資料 i 在start位置 end位置 和中間位置找到中位數,將其換到start位置 void getmodnum int arr,int s...
快速排序演算法實現(遞迴實現 棧實現)
基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...
快速排序的非遞迴實現(棧)
快速排序非遞迴基本思想 將每一段的頭和尾放在棧中,在逐步出棧。首先先建乙個棧或者呼叫stl 標準模板庫 中 棧函式。在標頭檔案中。include include include using namespace std define size 20 typedef int datatype typed...