用棧實現快速排序

2021-08-08 05:53:58 字數 987 閱讀 8887

#include 

#include

#include

#include

#include

#include

//快速排序

//一次劃分過程

int partation(int*arr,int low,int high)//返回值為low與high相等時的下標

if(low == high)

else

while((low//從前往後找比基準大的數字

if(arr[low]>tmp)

else

}arr[low]=tmp;//基準放入

return low;//返回基準下標

}//用棧和佇列組數對實現快速排序

void quicksort(int *arr, int len)//最壞情況下時間複雜度為o(n^2)

if(par1)//基準右邊至少兩個資料

while(top>0)//棧不空,處理棧中資料

if(par+1

//基準右邊至少兩個資料

}free(stack);

}//選擇排序

//演算法思想:每次從待排序序列中選出最小值,與待排序序列中的第乙個值進行交換,已經確定的不參與再次比較,只將待排序資料進行排序

void selectsort(int *arr,int len)//時復o(n^2),空復o(1),不穩定, 優化——錦標排序/樹排序:兩兩比賽,誰小誰贏

}if(minindex!=i)

}}void show(int *arr,int len)

printf("\n");

}int main()

; quicksort(arr,sizeof(arr)/sizeof(arr[0]));//快速排序

show(arr,sizeof(arr)/sizeof(arr[0]));

return

0;

用棧實現快速排序

include include include include include include 快速排序 一次劃分過程 int partation int arr,int low,int high 返回值為low與high相等時的下標 if low high else while lowtmp el...

用scala實現快速排序

author 孤星魅影 乙個簡單的整型陣列快速排序 scala大部分符號都是左結合,只有 的連線符是右結合,a b c 相當於a b c 它會優先執行冒號右邊的表示式。def sortint arr array int array int 乙個完整的快速排序的方法 可以傳入任意型別的buffer對其...

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...