您的位置:首页 > 其它

排序

2016-03-23 12:48 218 查看
一、概述

根据排序所涉及的存储器,可分为内部排序和外部排序。内部排序是将待排序的数据元素全部存入计算机内存进行排序。外部是待排序的数据元素不全部装入内存,在排序过程中需要不断访问外存。

内部排序有:插入排序、交换排序、选择排序、归并排序

 

二、插入排序

是一种简单排序,复杂度为O(n2)。就是一个一个比较,找到对应的位置就插进去

 

三、希尔排序

先将整个待排记录序列分割为若干子序列,分别进行直接插入排序。比如首先2个一组,排好了后4个一组,然后8个.....

 

四、交换排序

   1、冒泡

       将第一个元素与第二个进行比较,前者大的话就交换。再将第二个与第三个交换....一次完了后最大的那个确定了。接着对除去已经确定的那个元素,对那个n-1个序列进行冒泡排序

   2、快排

      平均性能是最快的。但是在初始序列本来就已经排好的情况下是时间最差的。

       基本思想是任选一个记录(通常是第一个),让其作为枢轴,以他和剩余的进行比较。把比他小的放在他左边,大的放在右边。好了之后以其为分割,左右两边分别进行排序。

操作的时候维护两个变量low,front。初始化时分别为最低位置和最高位置。当进行比较时,先front往左边,遇到第一个比枢轴小的数,就交换这两个数。然后low往右,遇到第一个比枢轴大的就交换.....这两个数轮流往中间缩进。当二者相等时比较结束。

 

五、选择排序

1、简单选择排序

      基本思想是从剩余数列中选择第i小的数放入第i个位置。时间复杂度比较大

2、堆排序

  堆排序分为大顶堆和小顶堆。大顶堆就是父节点大于孩纸节点。排序时,先输出根节点,再把剩下的节点重新生成大顶堆,再输出顶节点.......时间复杂度为O(nlogn),比快排快,且只占一个用于交换记录的临时空间。

 

六、归并排序

思想就是将两个有序的子序列合并为一个新序列。感觉有点像希尔排序。只不过希尔的两个数的选择是中间隔了几个数字的。如有8个,第一趟选的是(1,5)(2,6)(3,7)(4,8)。

归并的选则是(1,2)....

 

七、基数排序

就是排序的关键字有多个因素。比如排扑克牌,依据有花色和大小。实现时可以用线性链表

 

八、外部排序

    当要排序的数据元素非常多,以致内存不能一次处理,这时需要将一部分放入外存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: