首页 > 代码库 > 排序?排序!
排序?排序!
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天复赛。
那是我愿意付诸一生的人,现在却没法拥有。
排序?排序!