jQuery火箭图标返回顶部代码

SDUT 3491 数据结构实验之排序八:快速排序

 

数据结构实验之排序八:快速排序

Time Limit: 1000 ms Memory Limit: 65536 KiB

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

提示:快排的时间复杂度为O(nlogn),最坏情况下为O(n
2


代码实现如下(g++):
#include<bits/stdc++.h>

using namespace std;

int a[100010];

void quicksort(int l,int r)//快排我就不多说了,比较基础的排序方式
{
    if(l>=r)return ;
    int i=l,j=r;
    int key=a[l];
    while(i<j)
    {
        while(i<j&&a[j]>=key)j--;
        a[i]=a[j];
        while(i<j&&a[i]<=key)i++;
        a[j]=a[i];
    }
    a[i]=key;
    quicksort(l,i-1);
    quicksort(i+1,r);
}

int main()
{
    int n,i;
    while(~scanf("%d",&n))
    {
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    quicksort(0,n-1);
    for(i=0;i<n;i++)
    {
        i<n-1? printf("%d ",a[i]):printf("%d\n",a[i]);
    }
    }
    return 0;
}


/***************************************************
Result: Accepted
Take time: 148ms
Take Memory: 596KB
****************************************************/

 

posted @ 2018-08-21 16:18  孑丶然  阅读(202)  评论(0编辑  收藏  举报
Live2D