#include <stdio.h>
#define N 100010
int n = 0;
int a[N];

void paixu(int a[], int left, int right) 
{
    if(left >= right)   //如果指针相遇说明排完本轮,则开始返回递归
    {
        return;
    }   
    int i = left - 1;
    int j = right + 1;
    int mid = a[(left + right)/2];
    while(i < j)
    {
        do
        {
            i++;       //防止死循环
        }while(a[i] < mid);

        do
        {
            j--;
        }while(a[j] > mid);

        if(i < j)
        {
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }

    paixu(a,left,j);
    paixu(a,j+1,right);

}

int main()
{
    scanf("%d",&n);
    for(int i = 0; i < n; i++) //输入
    {
        scanf("%d",&a[i]);
    }

    paixu(a,0,n-1);

    for(int i = 0; i < n; i++)  //输出
    {
        printf("%d ",a[i]);
    }

    return 0;

}


评论(0条)

请登录后评论
ziyuan

ziyuan Rank: 16

0

0

0

( 此人很懒并没有留下什么~~ )

首页

栏目

搜索

会员