• c++快速排序算法


    c++快速排序算法

    题目描述

    利用快速排序算法将读入的NN个数从小到大排序后输出。

    快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)

    输入输出格式

    输入格式:

    第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_ia**i,为你需要进行排序的数,数据保证了A_iA**i不超过10000000001000000000。

    输出格式:

    将给定的NN个数从小到大输出,数之间空格隔开,行末换行且无空格。

    输入输出样例

    输入样例#1:

    5
    4 2 4 5 1
    

    输出样例#1:

    1 2 4 4 5
    

    代码及注释

    #include <iostream>
    using namespace std;
    void qsort(int, int);
    int a[101];
    int change(int,int);
    int main()
    {
        int n;
        cin >> n;
        for (int i = 1; i <= n;i ++)//输入  
        {
            cin >> a[i];
        }
        qsort(1, n);
        for (int i = 1; i <= n;i ++)//输出 
        {
            cout << a[i] << " ";
        }
    //    cout << endl;
    //    return 0;
    }
    void qsort(int l,int r)
    {
        int mid, p;// mid是中间值  
        int j, i;//i是左边 j是右边  
        i = l;
        j = r;
        mid = a[(l + r) / 2];//取中间的一个数  
        do
        {
            while (a[i] < mid)//如果指的数大于中间就停 
            {
                i++;
            }
            while (a[j] > mid)//如果指的数小于中间就停 
            {
                j--;
            }
            if (i <= j)//如果i在左边; j在右边 
            {
            	if (a[i] != a[j])//交换 
            	{
            		p = a[i];
    	            a[i] = a[j];
    	            a[j] = p;
    			}
                i++;//各自移动 
                j--;
            }
        } while (i <= j);
        if (l < j)//排中间值左边的 
            qsort(l, j);
        if (i < r)//排中间值右边的 
            qsort(i, r);
    }
    /* 
    9
    3 5 8 1 2 9 4 7 6
    */ 
    

    STL代码

    虽然题目上不允许用STL
    但是
    我还是用了
    上代码

    #include <iostream>
    #include <algorithm>//STL库函数
    using namespace std;
    int main()
    {
        int arrays[100];
        int n;
        cin >> n;
        for (int i = 1;i <= n;i ++)
        {
            cin >> arrays[i];
        }
        sort(arrays,arrays + n + 1);//STL排序函数
        for (int i = 1;i <= n;i ++)
        {
            cout << arrays[i] << " ";
        }
        cout << endl;
        return 0;
    }
    
    

    算法视频

  • 相关阅读:
    ZooKeeper系列
    CST和GMT时间的区别
    ZooKeeper系列之二:Zookeeper常用命令
    分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    ZooKeeper资料
    分布式选举算法
    初识ZooKeeper与集群搭建实例
    原子广播
    Apache ZooKeeper
    工作流引擎
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11072454.html
Copyright © 2020-2023  润新知