那些年,小弟我们一起学过的排序
由于开发环境的不断完善,绝大多数算法都被封装起来,致使,我们很少能够接触到这方面的应用,让我们对算法与数据结构没有了概念。但是当我们接触到大型数据,以及复杂逻辑的时,对于算法的要求就不那么简单了。要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
排序在数据结构的中的地位举足轻重。所以对排序有一个概括的说明。
(1) 插入排序
基本思想:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。:
实例:
(2) 希尔排序
基本思想:希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成(n除以d1)个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止
实例:
(3) 简单选择排序
基本思想:设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(R,Ri+1,…,Rn中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。
实例:
(4)冒泡排序:
基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
实例:
由于常用的排序方法较多,所以,把他们分为几篇博客来写,未完待续…………
- 3楼lfmilaoshi6小时前
- 总结其中共同的规律,才好n米老师
- Re: CJL56785小时前
- 回复lfmilaoshin看的时候,只能浅显的懂得其中的规则
- 2楼zuozuo1245昨天 21:42
- 不错,顶起
- 1楼tang_huan_11昨天 20:54
- 挺好的!