首页 > 代码库 > 排序?排序!

排序?排序!

1545 最简单排序 

题目描述 Description
实现从小到大排序。
输入描述 Input Description
第一行一个整数n
第二行:n个整数,每个用空隔隔开。
输出描述 Output Description
从小到大依次数据,每行一个,共n行。
样例输入 Sample Input
6
1
2
5
4
3
2
样例输出 Sample Output
1
2
2
3
4
5
数据范围及提示 Data Size & Hint
最简单的排序,供初学者练习,不要想太复杂。
n<=12

先给出一道codevs上的一道题,最简单排序,经过一段时间的学习

排序的方法大概,有以下几种

1、桶排序

2、冒泡排序

3、插入排序

4、选择排序

 

对于以上几个排序

一、桶排序(箱排序)

对于桶排序有一个很好理解的图

技术分享

 

优点:在于排一些很正常的值,速度很快,思路很简单

缺点:在于受限于其最大值的约束,不同的最大值影响其最外层循环的次数,导致时间也不同。

 

二、冒泡排序

对于冒泡排序有一个很好理解的图

技术分享

 

优点:在于稳定,在内层循环处第一遍走可以将其最大值移至最后一位,很稳很好理解,在两个相邻的需要排序的值之间比较,较大数放后面,两个进行交换,放在for循环中即可。

缺点:时间消耗较多,有一定部分的浪费。

 

三、选择排序

对于选择排序有一个很好理解的图

技术分享

简单排序处理流程

(1)从待排序序列中,找到关键字最小的元素;

(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

这个与冒泡排序最大的不同之处就在于:

选择排序是找最小元素,不断与第 N - 1 个位置进行互换。

而冒泡是将相邻的两个数互换。

所以会导致选择排序不稳,以及理解起来也比冒泡排序要难一些,代码也相对复杂一些。

优点:快。

缺点:浪。

 

四、插入排序

对于插入排序有一个很好理解的图

 

技术分享

大概理解的方法就是:手里有一堆牌,假设你是一张一张拿的,手里先有了一张牌,第二张牌拿上后与他比大小,按升序排列,第三张牌拿上后与这两个数比,总之每次不断缩小范围,在最小范围内把这张牌放进去,最后所有牌放完了,再把排好的牌输出即可。

优点:稳成一匹马。

缺点,相比较之前的几种排序,这个着实有些难理解,以及到了后面的引入的二分插入排序,希尔排序法等。。。。

 

对于详细代码明天再更新吧,刚才有大佬过来指导了一番,略显恐慌,明天看DP(以及发表各种不成熟的见解,有错请及时指出)。

还有218天初赛, 还有246天复赛。

那是我愿意付诸一生的人,现在却没法拥有。

排序?排序!