快速排序c語言遞迴和棧實現

2021-06-23 02:42:03 字數 887 閱讀 3278

用到乙個方法,交換兩個數的值

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...