关于排序(杂记)

排序算法

关于排序,一些基础的排序方法(部分)比如:

冒泡排序
从第一个元素开始依次比较,若不符合所需顺序则进行交换,然后再从第一个开始遍历,直到整个数列排列结束。时间复杂度为O(n^2)较高。

快速排序
先找一个数作为基准数,然后从两边查找交换,使这个数一边的数都小于这个数,另一边的数都大于这个数,然后在这个基准数的两边重复此过程,完成排序。

选择排序
每一此遍历从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

排序函数:

手打代码肯定是略微麻烦的,而STL给我们提供了现成的函数,直接运用函数使我们的代码更加遍历高效。

1. sort函数

设待排序a数组的长度为n,sort函数的格式为sort(a,a + n,cmp);
cmp函数为排序的依据,我们可以依据题意或者自己的计划自己写此函数,从而使sort函数按照自己的意愿进行排序工作。如果不写cmp也可以,即默认升序排列;
另外可以利用cmp函数可以根据结构体某个元素或依据题意的特殊要求,对结构体排序或字符串排序;

2.nth_element

STL库中存在一个神奇的函数,那就是nth_element,这个函数主要用来将数组元素中第k小的整数排出来并在数组中就位。
函数语句:nth_element(数组名,数组名+第k小元素,数组名+元素个数);
根据此函数可以直接对于特定题型求解;
具体例子可详见洛谷网站P1923求第k小的数
另附网址:https://www.luogu.com.cn/problem/P1923

3.unique去重函数

unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个)。
unique(num,num+n)返回的是num去重后的尾地址,该函数可以把重复的元素移到后面去,然后依然保存到原数组中。
因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。

具体用法如下:
#include<iostream.h>
int num[100];
unique(num,num+n);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值