快速排序代码,亲自写的

来源:互联网 发布:9神淘宝店 编辑:程序博客网 时间:2024/04/29 21:11

#include <stdio.h>

int digit[105];//这个全局变量先声明出来

void quicksort(int left,int right)

{

    int i,j,t,temp;

    if(left>right)return;

    temp=digit[left];//temp就是一个基准数

    i=left;

    j=right;

    while(i!=j)

    {

        //顺序很重要,要先从右边找

        while(digit[j]>=temp&&i<j)

        {

            j--;

        }

        while(digit[i]<=temp&&i<j)

        {

            i++;

        }

        if(i<j)//ij没有相遇时

        {

            t=digit[i];

            digit[i]=digit[j];

            digit[j]=t;

        }

    }

    digit[left]=digit[i];

    digit[i]=temp;//基准数归位

    quicksort(left,i-1);

    quicksort(i+1,right);

    //用递归的方法结束快排

}

int main()

{

    int n;

    scanf("%d",&n);

    for(int i=1;i<=n;i++)

    {

        scanf("%d",&digit[i]);

    }

    quicksort(1,n);

    for(int i=1;i<=n;i++)

    {

        printf(i==n?"%d":"%d ",digit[i]);

    }

    return0;

}

0 0