快速排序

来源:互联网 发布:中欧基金 知乎 编辑:程序博客网 时间:2024/06/16 04:51
#include <stdio.h>   //快速排序   //快速排序法是冒泡排序法的一种改进,主要的算法思想是在待排序的n个数据中取一个数据作为基准值   //将所有记录分为三组,使第一组各数据值均小于或等于基准值,第二组做基准值的数据    //第三组各数据值均大于或等于基准值,这便实现了第一趟分割,然后再对第一组和第三组分别重复上述    //方法,依次类推,直到每组中只有一个记录为止void qusort(int s[],int start,int end){    int i,j;    i=start;       //将每组首个元素赋给i    j=end;         //将每组末尾元素赋给j    s[0]=s[start];  //设置基准值    while(i<j)    {        while(i<j&&s[0]<s[j])            j--;              //位置左移        if(i<j)        {            s[i]=s[j];    //将小于或等于基准值的s[j]放到s[i]的位置上            i++;          //位置右移        }        while(i<j&&s[i]<=s[0])            i++;        //位置右移        if(i<j)        {            s[j]=s[i];     //将大于或等于基准值的s[i]放到s[j]位置            j--;           //位置左移        }    }    s[i]=s[0];     //将基准放入指定位置    if(start<i)        qusort(s,start,j-1);    //将分割出的部分递归调用qusort函数    if(i<end)        qusort(s,j+1,end);}void main(){    int a[11],i;    printf("请输入10个数:\n");    for(i=1;i<=10;i++)        scanf("%d",&a[i]);    qusort(a,1,10);   //调用函数进行排序    printf("排序后的顺序是:\n");    for(i=1;i<=10;i++)        printf("%5d",a[i]);    printf("\n");}

end
MrBread 2017-02-06

0 0