今日排序方法c语言(排序方法)
大家好,小宝来为大家解答以上问题。排序方法c语言,排序方法很多人还不知道,现在让我们一起来看看吧!
1、 1选择并排序一组已知的无序数据a[1],a[2],A [n],并按升序排列。
2、首先,比较a[1]和a[2]的值。
3、如果a[1]大于a[2],则两者的值交换,否则不变。
4、然后比较a[1]和a[3]的值,如果a[1]大于a[3],则交换它们的值,否则保持不变。
5、然后比较a[1]和a[4],以此类推,最后比较a[1]和a[n]的值。
6、经过这样一轮处理,a[1]的值一定是这组数据中最小的。
7、再用同样的方法比较a[2]和a[3]~a[n],那么a[2]的值一定是a[2]~a[n]中最小的。
8、用同样的方法比较a[3]和a[4]~a[n]再进行一轮,以此类推。
9、经过n-1轮处理后,a[1],a[2],A [n]按升序排列。
10、优点:稳定,比较次数与冒泡排序相同;缺点:比较慢。
11、2插入排序。
12、我们知道一组升序数据a[1],a[2],… A [n],以及一组无序数据b[1],b[2],… B [m]。
13、我们需要将它们组合成一个升序序列。
14、首先比较b[1]和a[1]的值。
15、如果b[1]大于a[1],跳过并比较b[1]和a[2]的值。
16、如果b[1]仍然大于a[2],继续跳过,直到b[1]小于A数组中的某个数据a[x],然后以同样的方式插入B[2]~b[m]。
17、(如果有无数组A,b[1]可以看作n=1的数组A)优点:稳定快速;缺点:比较次数不确定。
18、比较次数越少,插入点之后的数据移动越多,尤其是当数据总量巨大时。
19、但是链表可以解决这个问题。
20、3归并排序由Hill于1959年提出,又称Hill排序(shell sort)。
21、给定一组无序数据a[1],a[2],我们需要把它们按升序排列。
22、发现当n不大时,插入排序的效果很好。
23、先取一个增量d(d),列出a[1],a[1 d],A [12D] …为第一组,a[2],a[2 d],A [22D] …为第二组…,a[d],a[2d],a[。
本文到此结束,希望对大家有所帮助。