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