時限:1000ms 記憶體限制:10000k 總時限:3000ms
描述給定乙個數列,用快速排序演算法把它排成公升序。
輸入第一行是乙個整數n(n不大於10000),表示要排序的數的個數;下面一行是用空格隔開的n個整數。
輸出輸出排序後的數列,每個數字佔一行。
輸入樣例
53 2 1 4 5
輸出樣例12
345解析:快排是一種經典高效的排序演算法。運用遞迴和分治的方法實現。主要思想是,先找乙個標準值,以此為分界線,比它小的都在它左邊,比它大的都在它右邊,這樣就算一趟排序完畢,然後再分別把左邊和右邊的排序。分治的思想體現在剛開始分了兩份,然後分別把兩小份再分,直到每個小組裡只有兩個數,只需將他們比較大小就好。這個**方式有很多種,其中一種**如下:
#include
int n,num[100000];
void quicksort(int left,int right)
quicksort(1,n);
for(i=1;i<=n;i++)
}
演算法實驗一 (遞迴分治) 快速排序
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個數列,用快速排序演算法把它排成公升序。輸入第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出輸出排序後的數列,每個數字佔一行。輸入樣例 53 2 1 4 5 輸出樣例12 ...
遞迴與分治 快速排序
描述 給定乙個數列,用快速排序演算法把它排成公升序。輸入 第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出 輸出排序後的數列,每個數字佔一行。輸入樣例 5 3 2 1 4 5 輸出樣例 1 2345 基本思想 讓數列中的乙個數成為劃分基準,比這個基準...
分治與遞迴 快速排序
快速排序的基本思想可以這樣來理解 對一組待排序元素,選定其中乙個元素x為基準,將小於x的元素移動到其左邊,將大於x的元素移動到其右邊,然後對於x左邊與右邊的序列進行上述的操作直至排序完成。該演算法時間複雜度最壞的情況出現在待排序列為正序或者逆序時。此時的時間複雜度為o n2 平均時間複雜度為o nl...