博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构中的排序算法总结
阅读量:7239 次
发布时间:2019-06-29

本文共 1675 字,大约阅读时间需要 5 分钟。

数据结构中的排序算法

 

当待排序序列基本有序时优先选择简单排序,快速排序平均次数少于堆排序

1   插入排序

1)  直接插入排序

第一次将位置0和位置1进行比较,小的放前。

第二次将位置2上的数字,插入到位置0和位置1中。
第k次将位置k上的数字,插入到第k-1次已经完成的序列中。

    5  2  6  0  3  9  1  7  4  8

一趟  2  5  6  0  3  9  1  7  4  8

二趟  2  5  6  0  3  9  1  7  4  8

三趟  0  2  5  6  3  9  1  7  4  8

四趟  0  2  3  5  6  9  1  7  4  8

五趟  0  2  3  5  6  9  1  7  4  8

六趟  0  1  2  3  5  6  9  7  4  8

七趟  0  1  2  3  5  6  7  9  4  8

八趟  0  1  2  3  4  5  6  7  9  8

九趟  0  1  2  3  4  5  6  7  8  9

 

2)希尔排序

先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。

         49  38  65  97  76  13  27  49  55  04

第一趟增量5  13  27  49  55  04  49  38  65  97  76

第二趟增量3  13  04  49  38  27  49  55  65  97  76 

第三趟增量1  04  13  27  38  49  49  55  65  76  97     

2   选择排序

选择排序每一趟从待排序的数据元素中选出最小(或最大)的一个元素,第i趟确定最小元素的时候会通过不断地比较选择最小值与第i个位置元素交换

每次都是遍历一遍剩下要排序的部分,找出其最大值或最小值。关键码比较次数与记录地初始排列无关

1)直接选择排序

第一次取区间[0,N],选择该区间最小的数和位置0的数进行交换;
第二次取区间[1,N],选择该区间最小的数和位置1的数进行交换;
第三次取区间[2,N],选择该区间最小的数和位置2的数进行交换;
依次往下,可以得到排序,这就是选择排序。

ex

       8  5  9  3  7

遍历1号  3  5  9  8  7

遍历2号  3  5  9  8  7

遍历3号  3  5  7  8  9

遍历4号     3  5  7  8  9

 

2)堆排序

3  交换排序

1)冒泡排序

第0趟交换

34  23  1  2

34  23  1  2

34  1  23  2

1  34  23  2

第1趟交换

1  34  23  2

1  34  2  23

1  2  34  23

第2趟交换

1  2  34  23

1  2  23  34

 

 

public class BubbleSort {	public static void sort(long[] arr) {		long tmp=0;		//i趟交换,为第i个位置赋值		for (int i = 0; i < arr.length-1; i++) {			for (int j = arr.length-1; j > i; j--) {				if (arr[j]

 

 

 

2)快速排序

1从序列当中选择一个基准数(pivot)

2将序列当中的所有数依次遍历,比基准数大的位于其右侧,比基准数小的位于其左侧

重复步骤1.2,直到所有子集当中只有一个元素为止。

 

 

4  归并排序

 https://www.cnblogs.com/chengxiao/p/6194356.html

转载于:https://www.cnblogs.com/52circle/p/9176290.html

你可能感兴趣的文章
老男孩在创业及培训中28条教导学生感悟语录分享!
查看>>
老板不在,你不得不做出越权的决定,咋办?(考试题系列)
查看>>
如何解决SQL Server 2008 R2中“阻止保存要求重新创建表的更改”的问题!
查看>>
cloudstack 4管理器安装备忘
查看>>
sentry日志管理系统安装以及使用教程
查看>>
python-pip : Depends: python-setuptools (>= 0.6c1) 问题
查看>>
iptables外网一端口通过NAT转发内网一服务器端口上
查看>>
新书推荐
查看>>
程序与生活:生活要持续更新
查看>>
网络安全系列之四十九 IIS6.0权限设置
查看>>
VSphere client 虚拟机克隆及网卡报错处理
查看>>
【第一期】如何打造属于自己的网站编辑器——CKEditor与UEditor之争
查看>>
linux下卷组管理
查看>>
17个Linux系统高频率常用命令行和shell小脚本
查看>>
VisualSvn Server介绍
查看>>
Nginx性能测试工具之http_load
查看>>
为httpd服务器上单一的网站做客户机地址限制和用户授权限制知识补充
查看>>
Windows Server 2008终端服务详解系列4:TS网关的部署
查看>>
路由器通过NVI解决内网访问内部服务器的外部映射地址测试
查看>>
系统架构师-基础到企业应用架构-分层[上篇]
查看>>