简单排序总结:选择、插入、交换

来源:互联网 发布:java注解value值不合法 编辑:程序博客网 时间:2024/05/01 21:23

最近,开始对数据结构和算法的复习,这是自己以前学习的弱点,现在想来当时自己就应该心无旁鹜的好好学的,但是,当时有些急功近利,只好现在抓紧时间了。(这些基本的排序方法,在实际中由于效率问题,可能很少使用,我们之所以要学习这些方法,权当扩展知识面,锻炼思维~_~)1、选择排序选择排序:基本思想是对列表或者列表的一部分进行多次扫描,每次选出一个元素将放到正确位置。过程就是:数组元素为n个,从a[0]开始,在a[1]a[n-1]中每一个都与a[0]比较,选出最小的那个,然后在存放到a[0]位置, 然后再从a[1]开始,再是a[2]...这样重复n-1次。

对于线性链表:假设链表数组Node* a[5],节点为Node,数据为整形int。

2、交换排序交换排序:系统的交换那些不符合次序的“元素对”,直到列表中不存在这种元素为止;典型的例子,冒泡排序。冒泡排序:n个元素的序列,从左到右的比较两个连续的元素,如果左边的''右边的则进行交换,重复该过程n-1次,第i次要进行n-1-i次比较。

3、插入排序插入排序:基本思想是,反复地插入新元素到已经排好序的列表之中,且令插入后的列表也是有序的。

总之,不存在最佳的通用排序算法。对于短列表,线性插入排序的性能比较好一点;对于一般的列表,快速排序、希尔排序和堆排序是比较好的选择;如果,序列是基本有序的,我们可以采用冒泡排序。