排序相关题

1、简单:

明的随机数

 題目要求:排序并消除相同的数字。

相对来说比较简单,这道题目的话思路就是排序后删除(排序后更好删除相同的数字)。

排序的话,可以冒泡排序:

当然,也可以使用头文件algorithm里的sort函数。sort(a,a+n)  (a为大小为n的数组);

 删除元素,用数组就选择连续覆盖,然后n--;最后总体输出就好了。

2、一般

快速排序

题目要求:进行快速排序(从小到大排序,不能超时)。

数据量比较大,如果使用最基本的排序方法肯定是过不了的。但是STL里sort的话倒是可以过去,不过不建议用。

此时可以选择使用二分法排序,大致方法如下:

可以创造出一个函数,如:void  qsort(int r,int l)。r为左边界,l为有边界。

取一个mid将r-l从中间分开,前面若有大的放后面,后面小的放前面(交换),这样下来,从中间分开的两边虽然不一定都是能够使得满足条件,但起码有一边是满足条件的。(条件:前面的一段都小于a[mid],后面的一段都大于a[mid],从而进行多次递归完成排序。然后以此为基准写如下步骤。

通过这个函数,就可以以二分法完成排序。

 稍难的暂时看不懂。。。不过做了一个依旧是一般的排序。

生日

 例子:

3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

输出结果:

Luowen
Yangchu
Qiujingya

 从题目就可以看出,输入的数据是一定要一起保存的,那么就需要用到结构体。因此,这道题主要是学习结构体的整体排序。一般用sort配合一个bool函数以达到我们所需要排序的效果。

并配合sort(但sort不太稳定因此替换为 stable_sort,其实用sort也可以= =) 

 这两个结合其实就是写出你需要返回怎么样的结果就可以了(在哪些条件成立的情况下返回哪些结果),因此只要写出条件以及结果就可以了,全部过程就不必深究了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值