排序算法

1.插入排序

    1.1 插入排序假定前面的i -1个已经排好顺序, 现在把第i个插入到前面的i-1个使得前面个都是排好序的,当第n个也找到相应的位置之后,即排好序了。

    1.2 直接插入排序。 第i个和前面的每一个比较,直到发现它大于等于第j个, 小于第j+1个元素的时候,把第j+1和元素到第i-1个元素全部向后移一位,再把第i个元素放到 j+1的位置上。O(n2).

    1.3 折半插入排序。 和直接插入排序不同的是,在寻找第i的位置的时候,利用折半查找算法。O(nlog2n).

     1.4 链表查询排序。链表插入排序和直接插入排序在寻找第i个元素的位置方面效率一样,但是链表查询不需要移动元素的位置,只需要修改链接指向就可以了。O(n2)

     1.5 希尔排序 (Shell Sort, diminishing-increment sorting, 缩小 )。把数据表中的每相隔 A距离的元素放在一起作为一个子元素表, 对每个子元素表利用直接插入排序。然后把距离变成 A/2, 重复上面操作,直到 A=1, 这时所有的元素都在同一个列表中,进行完排序,整个列表即排好顺序。(n1.25 ~ 1.6n1.25)

2. 交换排序
    2.1 交换排序。两两排序待比较的关键码, 如果发现逆顺序,交换它们的位置。
    2.2 起泡排序。从第N个元素开始,比较N个元素和第N-1个元素, 如果N< N-1, 交换,继续比较N-1N-2,如果N-1<N-2,再互换,直到我们
找到1-N中的元素,我们称这个是一次起泡,完成N次起泡之后,即排好顺序。O(n2)
 2.3 快速排序。快速排序也称为分区排序。选择一个基准元素。然后把整个待排序的列表中的元素比它大的元素放在它的右边,把小于等于它的元素放在它的左边。
这样基准元素的位置就是整个列表排好序后它应该在的位置,然后我们对左列表和右列表重复上面相同的步骤。O(nlog2n)
3. 选择排序
	3.1 选择排序。 每一趟从后面的n-i个元素中选出关键码最小的元素作为有序列表的第i个元素,这样第n-2趟完成之后。整个列表就变成有序列表了。
	3.2 直接选择排序。 每次后面的n-i个元素中找出最小的元素。作为有序列表的第i个元素,寻找最小元素的算法:比较所有的元素,直到找到最小的。O(n2)
	3.3 锦标赛排序。 O(nlog2N).
	3.4 堆排序。 利用堆结构和形成堆的算法 O(nlog2n)
4. 归并排序
	4.1 归并排序。 所谓的归并就是把两个有序的列表归并为一个有序的列表。
5. 基数排序 
	5.1 基数排序。 分配,收集的思想。用对多关键码进行排序的思想对单关键码进行排序。
6. 外排序

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值