c++排序(第一章----桶排序与sort排序)

众所周知,在c++中排序是一种非常重要的算法体现,穿插于大大小小的题目当中,基础的排序大多在CCF GESP C++ 四级的知识点中,所以,要入门c++,学会排序是必不可少的。

我们先来学习较为简单的桶排序。

【算法介绍】

桶排序的思想:

若待排序的值在一个有限范围内(整型)时,可设计有限个有序桶,桶号就是待排序的值。

之后,将待排序的值依次装入对应的有序桶中(重复值都装入对应的桶),然后顺序输出各桶的值,便得到有序的序列。

【算法代码】

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=500;
int a[maxn];
int main() {
    int n;
    cin>>n;
    int x;
    for(int i=1; i<=n; i++) {
        cin>>x;
        a[x]++;
    }
 
    for(int j=1; j<=maxn; j++) {
        while(a[j]>0) {
            cout<<j<<" ";
            a[j]--;
        }
    }
    return 0;
}

由于桶排序需要创建多个桶,特别占用空间,尤其是它的时间复杂度也达到了O(n²),所以在信息学奥赛中不经常用。

接下来我们介绍sort排序。

【算法介绍】

sort是一个非常方便的排序算法,与其他不同,它不用长篇大论的打(代码),只需要套用就行,非常方便,时间复杂度也只有O(log2n),所以在许多比赛中也经常出现,它的格式是这样的:

cpp 复制代码
sort(数组名+开始下标,数组名+开始下标+结束下标)
//这样做到的默认是从小到大排序。

当然,如果想要从大到小排,需要自己写一个函数为排序规则。

【算法代码】

从小到大排:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
 
const int maxn=100;
int a[maxn];
 
int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];
 
    sort(a+1,a+1+n);
    for(int i=1; i<=n; i++) {
        cout<<a[i]<<" ";
    }
 
    return 0;
}

从大到小排:

cpp 复制代码
​
#include <bits/stdc++.h>
using namespace std;
 
const int maxn=105;
int a[maxn];
 
int cmp(int a,int b){ 
    return a>b;
    }
 
int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>a[i];
    }
    
    sort(a+1,a+1+n,cmp);
    for(int i=1; i<=n; i++) {
        cout<<a[i]<<" ";
    }
 
    return 0;
}

​

本期就这样愉快地结束了(求赞求关)。

相关推荐
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
weilx12342 天前
C++笔记-文件IO-<fcntl.h>
c++
Smileyqp沛沛2 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
m0_547486662 天前
《数据结构教程》全套 PPT课件2026
数据结构
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光2 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·3 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven3 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
程序猿编码3 天前
告别改源码适配模型:纯 C++ 可配置 LLM 推理引擎,全格式全结构兼容
c++·大模型·llm·推理引擎