zoukankan      html  css  js  c++  java
  • YTU 2754: C++习题-快速排序

    2754: C++习题-快速排序

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 92  解决: 55

    题目描述

    以某个数为标准,把比这个数大的都移到它的后面,比这个数小的都移到它的前面,这样它后面的任意一个数都比它前面的任意一个数大,再将这前后两组数再分别重复这一过程,最后就会得到有序的数列;
    补充:如果从大到小排列可以将比这个数大的都移到它的前面,比这个数小的都移到它的后面.
    快速排序从小到大排序算法描述:
    1)设置两个变量first、last,令first等于一组数的第一个数的下标,last等于一组数的最后一个数的下标;
    2)以某个数组元素作为关键数据(这里将这组数的第一个数作为关键数据),赋值给key,即key=A[first];
    3)从last开始向前搜索,即由后开始向前搜索(last--),找到第一个小于key的值A[last],将A[last]给A[first];
    4)从first开始向后搜索,即由前开始向后搜索(first++),找到第一个大于key的A[first],将A[first]给A[last];
    5)重复第3、4步,直到first=last,将key的值给a[first];
    6)将first两边的两组数分别再进行排序,重复1、2、3、4、5步;直到每组只剩一个数排序结束.
    现在,我们的题目来了...
    输入一组整数,将这组整数从小到大排列。
    部分代码已给定如下,只需要提交缺失的代码。

    #include <iostream>
    using namespace std;
    void Quicksort(int a[],int low,int high)
    {
        if(low>=high)
        {
            return;
        }
        int first=low;
        int last=high;
        int key=a[first];
        while(first<last)
        {
    ///////////////////////////////////////////////////////////////////
            /*
             请在该部分填写缺少的代码
            */
    ////////////////////////////////////////////////////////////////////
        }
        a[first]=key;
        Quicksort(a,low,first-1);
        Quicksort(a,last+1,high);
    }


    int main()
    {
        int i,a[100],x,n=0;
        cin>>n;
        for(i=0; i<n; i++)
            cin>>a[i];
        Quicksort(a,0,n-1);
        for(i=0; i<=n-1; i++)
            cout<<a[i]<<" ";
        cout<<endl;
        return 0;
    }

    输入

    输入n和n个整数

    输出

    从小到大输出

    样例输入

    10
    2 1 3 5 4 6 8 7 9 10
    

    样例输出

    1 2 3 4 5 6 7 8 9 10 

    你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

    #include <iostream>
    using namespace std;
    void Quicksort(int a[],int low,int high)
    {
        if(low>=high)return;
        int first=low;
        int last=high;
        int key=a[first];
        while(first<last)
        {
            for(; a[last]>key&&first<last; last--);
            a[first]=a[last];
            for(; key>a[first]&&first<last; first++);
            a[last]=a[first];
        }
        a[first]=key;
        Quicksort(a,low,first-1);
        Quicksort(a,last+1,high);
    }
    int main()
    {
        int i,a[100],x,n=0;
        cin>>n;
        for(i=0; i<n; i++)
            cin>>a[i];
        Quicksort(a,0,n-1);
        for(i=0; i<=n-1; i++)
            cout<<a[i]<<" ";
        cout<<endl;
        return 0;
    }
    

  • 相关阅读:
    RabbitMQ
    操作系统复习知识
    计算机网络相关知识复习
    转帖--Linux的文件检索(locate、find、which、whereis)
    go-ioutil
    使用wrk进行压测
    03x01 Java基础语法
    02x03 Hello World!!!
    02x02 环境搭建
    02x01 Java入门
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989633.html
Copyright © 2011-2022 走看看