• 蓝桥杯练习(基础十三)数列排序


    基础练习01 数列排序

    问题描述
      给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
    输入格式
      第一行为一个整数n。
      第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
    输出格式
      输出一行,按从小到大的顺序输出排序后的数列。
     
    样例输入
    5
    8 3 6 4 9
    样例输出
    3 4 6 8 9
    #include<iostream>
    #include<vector>
    using namespace std;
    
    // 快速排序(从小到大)
    void quickSort(int left, int right, vector<int>& arr)
    {
        if(left >= right)
            return;
        int i, j, base;
        i = left, j = right;
        base = arr[left];  // 取最左边的数为基准数
        while (i < j)
        {
            while (arr[j] >= base && i < j)
                j--;
            while (arr[i] <= base && i < j)
                i++;
            if(i < j)
            {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        // 基准数归位
        arr[left] = arr[i];
        arr[i] = base;
        // 递归左边
        quickSort(left, i-1, arr);
        // 递归右边
        quickSort(i+1, right, arr);
    }
    
    int main(){
        int n;
        cin >> n;
        vector<int> a(n);
    
        // 数据读入
        for(int i=0; i<n; ++i){
            cin >> a[i];
        }
        // 快排
        quickSort(0, n-1, a);
        // 数据输出
        for(int i=0; i<n; ++i){
            cout << a[i];
            if(i != n-1){
                cout<< " ";
            }
        }
    }

    个人总结

      这个题考察排序算法,本来是想用冒泡做的,但是想想不能老用冒泡(自己只会写冒泡)吧,而且时间复杂度较高。这个题用的快排做的,emmm,对,看了好多别人的资料O(∩_∩)O哈哈~,之前数据结构老师教的全还回去了。(>人<)

    知识拓展

      快速排序:简单点说就是 在一组数中选定一个数为基数进行一次简单排序,使得 基数左边的数都比基数小(大)基数右边的数都比基数大(小),然后采用分治的思想,对基数左右边两序列进行递归操作,最终使得整个序列有序。需要注意的是,如果是从左方选取基数,应从右方进行搜索;若从右方选取的基数,则从左方进行搜索。

      附个大佬讲解快排的博文:https://blog.csdn.net/qq_28584889/article/details/88136498

  • 相关阅读:
    (转)bash内置命令mapfile:读取文件内容到数组
    new 一个接口?
    Linq的一些操作符图表展示
    StreamReader 和文件乱码
    XSLT 的调试
    不一样的大小写转换
    一些可能没用过的调试窗口
    私人工具分享:博客下载工具
    简单的实例来理解WCF 数据服务
    谈谈char ,nchar,varchar,nvarchar 和Uniqueidentifier
  • 原文地址:https://www.cnblogs.com/DullRabbit/p/12555900.html
Copyright © 2020-2023  润新知