• 快速排序


    用快速排序法对一组数据由小到大进行排序,数据分别为99,45,12,36,69,22,62,796,4,696.

    • 快速排序是冒泡排序的一种改进,主要的算法思想是在待排序的n个数据中取第一个数据作为基准值,将所有记录分为3组,使第一组数中各数据值均小于或等于基准值,第二组做基准值的数据,第三组中各数据值均大于或等于基准值。这便实现了第一趟分割,然后再对第一组和第三组分别重复上述方法,依此类推,直到每组中只有一个记录为止。
    方法一:
    #include <stdio.h>
    
    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];
                j--;
            }
        }
        s[i]=s[0];
        if(start<i)
            qusort(s,start,j-1);
        if(i<end)
            qusort(s,j+1,end);
    }
    void main()
    {
        int i,a[11];
        printf("请输入10个数:
    ");
        for(i=1;i<11;i++)
            scanf("%d",&a[i]);
        qusort(a,1,10);
        printf("排序后的顺序是:
    ");
        for(i=1;i<11;i++)
            printf("%5d",a[i]);
    }
    
    方法二:
    #include <stdio.h>
    #include <stdlib.h>
    void qusort(int a[],int start,int end)//对start和end之间的元素排序
    {
        int i,j,t;
        i=start;
        j=end;
        if(start<end)//区间内至少存在两个元素
        {
             t=a[start];//用区间的第一个元素做基准
            while(i!=j){//从区间两端开始扫描,直到i和j相等
                while(a[j]>=t&&i<j)//从右向左,找到第一个小于t的元素
                    j--;
                a[i]=a[j];//i,j上的元素交换
                while(a[i]<=t&&i<j)
                    i++;
                a[j]=a[i];
            }
            a[j]=t;
            qusort(a,start,j-1);
            qusort(a,j+1,end);
        }
    
    }
    void main()
    {
        int i,a[10];
        printf("请输入十个数:");
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        qusort(a,0,9);
        printf("排序后的数组为:");
        for(i=0;i<10;i++)
        {
            printf("%d ",a[i]);
        }
    }
    
  • 相关阅读:
    错误与异常_2-11选择题
    错误与异常_2-10选择题
    错误与异常_2-8选择题
    错误与异常_2-7选择题
    C#定时器
    C#动态webservice调用接口
    C# webservice返回Xml格式文件
    C#创建简单的Xml文件
    获取数据库中指定类型的数据库名称
    C#生成Xml以UTF-8无BOM格式编码
  • 原文地址:https://www.cnblogs.com/breathee/p/9369778.html
Copyright © 2020-2023  润新知