SDUT-3398_數據結構實驗之排序一:一趟快排
阿新 • • 發佈:2018-12-20
範圍 一個 sort output stdlib.h pre 輸入數據 長整型 數據結構
數據結構實驗之排序一:一趟快排
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
給定N個長整型範圍內的整數,要求輸出以給定數據中第一個數為樞軸進行一趟快速排序之後的結果。
Input
連續輸入多組數據,每組輸入數據第一行給出正整數N(N < = 10^5),隨後給出N個長整型範圍內的整數,數字間以空格分隔。
Output
輸出一趟快速排序後的結果,數字間以一個空格間隔,行末不得有多余空格。
Sample Input
8
49 38 65 97 76 13 27 49
Sample Output
27 38 13 49 76 97 65 49
題解:上學期學的快排,只要排一次就可以了。
#include <stdio.h> #include <stdlib.h> #include <string.h> int a[112345],n; void sort(int l,int r) { if(l>=r) return; int i = l,j = r; int x = a[l]; 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; } int main() { int i; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); sort(0,n-1); for(i=0;i<n;i++) printf("%d%c",a[i],i==n-1?'\n':' '); } return 0; }
SDUT-3398_數據結構實驗之排序一:一趟快排