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