遞迴-*快速排序
Problem Description
給定N(N≤10^5)個整數,要求用快速排序對資料進行升序排列,注意不得使用STL。
Input
連續輸入多組資料,每組輸入資料第一行給出正整數N(≤10^5),隨後給出N個整數,數字間以空格分隔。
Output
輸出排序後的結果,數字間以一個空格間隔,行末不得有多餘空格。
Sample Input
8 49 38 65 97 76 13 27 49
Sample Output
13 27 38 49 49 65 76 97
#include<stdio.h>
int i,n,a[100010];
void qsort(int a[],int left,int right){
int x = a[left],i = left,j = right;//以第一個數為一趟快排的樞軸元素
if(i >= j){//遞迴終止
return;
}
while(i < j){
while(i < j && a[j] >= x){
j--;
}
a[i] = a[j];
while(i < j && a[i] <= x){
i++;
}
a[j] = a[i];
}
a[i] = x;
qsort(a,left,i-1);//左半區間遞迴呼叫
qsort(a,i+1,right);//右半區間遞迴呼叫
}
int main(){
while(~scanf("%d",&n)){
for(int i = 0 ; i < n ;i++){
scanf("%d",&a[i]);
}
qsort(a,0,n-1);
for(i = 0 ; i < n - 1; i++){
printf("%d ",a[i]);
}
printf("%d\n",a[n - 1]);
}
return 0;
}
相關文章
- 快速排序【遞迴】【非遞迴】排序遞迴
- 快速排序-遞迴方式排序遞迴
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- Java不用遞迴的迭代快速排序示例Java遞迴排序
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 歸併排序(C++_分治遞迴)排序C++遞迴
- python 遞迴樹狀結構 和 排序Python遞迴排序
- 歸併排序的非遞迴實現排序遞迴
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴
- 資料結構:歸併排序(非遞迴)資料結構排序遞迴
- C++ 學習筆記(2):String、遞迴、排序C++筆記遞迴排序
- 遞迴和尾遞迴遞迴
- 第二章 :查詢與排序-------遞迴形式進行插入排序排序遞迴
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 遞迴遞迴
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 直播系統app原始碼,用遞迴實現氣泡排序APP原始碼遞迴排序
- C語言 遞迴實現二叉排序樹的插入C語言遞迴排序
- 排序之快速排序排序
- 什麼是遞迴?遞迴和迴圈的異同遞迴
- 排序:氣泡排序&快速排序排序
- go 遞迴Go遞迴
- JavaScript遞迴JavaScript遞迴
- 分而治之-遞迴遞迴
- 理解遞迴遞迴
- No.8 遞迴快速輸出斐波那契數列遞迴
- 快速排序排序
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 快速排序&&歸併排序排序
- 遞迴和遞推總結遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- 快速排序快速入門排序
- 遞迴呼叫 VS 迴圈呼叫遞迴
- 遞迴小記遞迴
- 理解遞迴 Recurtion遞迴