c语言 快速排序

问题引入:快速排序

第一行:输入n,表示要排序的的个数;

第二行:输入 n 个数;

输出:

排序后的数。

 

#include<stdio.h>

int a[100],n;    //定义全局变量,用于调用 

void quickSort(int left, int right)
{
    int t,tmp,i,j;
    if(left > right) //判断条件,不满足排序,返回空值 
    {
        return;
    }    
    
    tmp = a[left];    //第一个基数 
    i = left;
    j = right;
    while(i != j)
    {
        while(a[j]>=tmp&&i<j)    //从右端开始,循环,直达找到比tmp小的值 
            j--;
        while(a[i]<=tmp&&i<j)    //左端开始,循环,直到找到比tmp大的值 
            i++;
        if(i<j)                    //满足条件,交换值 
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }    
    }
    a[left] = a[i];                //将基数归位 
    a[i] = tmp;
    
    quickSort(left,i-1);        //左端排序 
    quickSort(i+1,right);        //右端排序 
}

int main()
{
    int i;
    scanf("%d",&n); 
    for(i=1;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    quickSort(1,n);
    
    for(i=1;i<=n;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;    
}

 

posted @ 2019-03-21 19:23  changfan  阅读(202)  评论(0编辑  收藏  举报