C++ 数组排序

1.开头

只要是C++的萌新做题时一定会碰到一个问题那就是——排序!!!

今天我们来解决这些问题

2.两种排序方式
2-1.双重循环排序

这个比较复杂, 原理是先遍历数组中所有的元素(下列简称遍历A), 再遍历序号比目前遍历的A大的元素, 最后判断, 如果你要从小到大排序, 那么你应该发现A后面有比A小的就把A和那个数互换, 反之如果你要从大到小排序, 那么你应该发现A后面有比A大的就把A和那个数互换.

拓展一下互换的方法: 可以直接用<algorithm>中的swap函数实现.

听着是不是有点绕? 我们举个例子看看.

#include <iostream>
#include <algorithm>
using namespace std;

int a[10] = {0, 1, 6, 2, 5, 3, 4};

int main(){
	cout << "原数组:" << endl;
	for(int i = 1; i <= 6; i++){
    	cout << a[i] << ' ';
    }
    cout << endl << "--------------------" << endl;
    for(int i = 1; i <= 6; i++){		// 从大到小
    	for(int j = i + 1; j <= 6; j++){
    		if(a[j] > a[i]) swap(a[i], a[j]);
    	}
    }
    cout << "从大到小排序后:" << endl;
    for(int i = 1; i <= 6; i++){
    	cout << a[i] << ' ';
    }
    cout << endl << "--------------------" << endl;
    for(int i = 1; i <= 6; i++){		// 从小到大
    	for(int j = i + 1; j <= 6; j++){
    		if(a[j] < a[i]) swap(a[i], a[j]);
    	}
    }
    cout << "从小到大排序后:" << endl;
    for(int i = 1; i <= 6; i++){
    	cout << a[i] << ' ';
    }
    return 0;
}

输出:

原数组:

1 6 2 5 3 4 
--------------------
从大到小排序后:
6 5 4 3 2 1 
--------------------
从小到大排序后:
1 2 3 4 5 6

这种方法非常繁琐, 那有没有简单的方法呢? 看第二种方法吧!

2-2.sort函数

我们可以直接调用<algorithm>库中的sort函数, 它默认从小到大排序.他的最简语法是:

sort(arrayname + start, arrayname + end + 1)

arrayname: 数组名

start: 开始的索引值

end: 结束的索引值

如果我们要从大到小, 或者添加更多的条件呢? sort给了我们灵活的选择, 我们可以自己定义cmp函数.cmp函数实现从大到小排序的方法如下:

bool cmp(int x, int y){
    return x > y;
}
// 在主函数中使用sort(a + 1, a + n + 1, cmp)   就可以啦!

这就是sort函数的用法.

2-3.方法对比

显然是cmp函数胜出! 而且很多题目他可能会卡你的内存和数据范围, 强迫你用sort函数.

3.愉快的结尾

欢迎在评论区提出意见和疑问!

制作不易, 请勿盗版!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值