
补之前的坑

主要内容:
1,选择排序
2,冒泡排序
3,插入排序

数值排序
输入n个数,将n个数从小到大的顺序输出。
输入样例:
6
195 156 305 293 253.1 114
输出样例:
114 156 195 253.1 293 305

1,选择排序
如果要对n个数实现排序,需要用到数组。我们需要使用循环,第一次,选择最小的数与a[0]交换位置,第二次,就不需要去管a[0],在a[1]到a[n]中选择最小的数与a[1]交换位置……经历n-1次选择,原队列就成为了有序的队列,这样的排序方式称之为选择排序。
比如上面的输入样例:
第一次遍历a[0]~a[5],a[1]<a[0],交换;a[2]>a[0],跳过;a[3]>a[0],跳过;a[4]>a[0],跳过;a[5]<a[0],交换。
第二次遍历a[1]~a[5],(此时a[0]==114,a[1]==195,a[5]==156),a[2]>a[1],跳过;a[3]>a[1],跳过;a[4]>a[1],跳过;a[5]<a[1],交换。
……
那么具体实现步骤如下:
1,将输入的数存在数组a中。
2,在a[1]~a[n]中选择值最小的元素,与第1位置元素交换,则把最小值元素放入a[1]中。
3,在a[2]~a[n]中选择值最小的元素,与第二位置元素交换,则把第2大值元素放入a[2]中……
4,直到第n-1个元素与第n个元素比较排序为止。
那么程序实现如下:


2,冒泡排序
冒泡排序的思想:以n个人站队为例:从第一个人开始,与相邻的人比较高低是否逆序对(高在前低在后),若逆序就交换两人,然后第2个和第3个比……直到第n-1个和第n个人比。经过了这一轮比较,最高的人被排到了最后面。第二轮从第1个人开始,与第2个人比较,一直到第n-2个人和第n-1个人比较。如此,进行n-1轮后,队列成为有序的队列。
那么程序实现如下:

个人认为这种排序方法最好理解。

3,插入排序
插入排序思想:比如打牌抓牌时,为了方便打牌,我们会按花色大小插入恰当的位置,当抓完所有的牌时,手中的牌便是有序的。插入排序跟抓牌类似。从第二个数开始,取出当前数作为待排序数,逐个与前面数比较。若小于前面数,则前面数后移;当大等于前面数时,插入当前空出的位置,直到第n个数插入正确为止。
程序实现如下:

个人认为插入排序是这三种排序中最难理解的一种了。

以上就是今天的内容了_(爱莉希雅_心动)
部分资料来自《CCF中学生计算机程序设计入门篇》(科学出版社)

