数据结构实验之排序一:一趟快排
題目描述
給定N個長整型范圍內(nèi)的整數(shù),要求輸出以給定數(shù)據(jù)中第一個數(shù)為樞軸進行一趟快速排序之后的結果。
?輸入
連續(xù)輸入多組數(shù)據(jù),每組輸入數(shù)據(jù)第一行給出正整數(shù)N(N < = 10^5),隨后給出N個長整型范圍內(nèi)的整數(shù),數(shù)字間以空格分隔。輸出
輸出一趟快速排序后的結果,數(shù)字間以一個空格間隔,行末不得有多余空格。
示例輸入
8 49 38 65 97 76 13 27 49示例輸出
27 38 13 49 76 97 65 49提示
#include <iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
using namespace std;
int a[10001];
void q(int a[],int l,int r)
{
? ? int k=a[l],i=l,j=r;
? ? if(r<=l) return;//注意等號的取舍;
? ? while(i<j)
? ? {
? ? ? ? while(i<j&&a[j]>=k) j--;
? ? ? ? a[i]=a[j];
? ? ? ? while(i<j&&a[i]<=k) i++;
? ? ? ? a[j]=a[i];
? ? }
? ? a[i]=k;
}
int main()
{
? ? int n;
? ? while(~scanf("%d",&n))
? ? {
? ? ? ? for(int i=0;i<n;i++)
? ? ? ? ? ? scanf("%d",&a[i]);
? ? ? ? q(a,0,n-1);
? ? ? ? for(int i=0;i<=n-2;i++)
? ? ? ? ? ? printf("%d ",a[i]);
? ? ? ? printf("%d\n",a[n-1]);
? ? }
? ? return 0;
}
總結
以上是生活随笔為你收集整理的数据结构实验之排序一:一趟快排的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程休眠
- 下一篇: 师--链表的结点插入