博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用排序算法
阅读量:2223 次
发布时间:2019-05-08

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

插入排序(直接插入排序,希尔排序)
选择排序(简单交换排序,堆排序)
交换排序(冒泡排序,快速排序)
归并排序
基数排序
//上面的都属于内部排序,何为内部排序呢,只要排序都是在内部完成的就较内部排序,如果内存不能装下这些数据,而且要用到外存,就叫外部排序
插入排序:
     57 68 59 52------68>57  不处理
                      ------59跟 57   68 进行比较,找到合适的位置进行插入
     57 59 68 52------52 和57 59   68 进行比较,找到合适的位置插入
    52 57 59 68  ----最终结果
Shell排序(插入排序的改进算法),其基本思想每一套都按照确定的间隔.使小的元素可以跳跃前进,缩小跳进直至为1
57 68 59 52 73 28 96 33 24 19
间隔用d=n/2=5
57 28        一组其他的类似的
28  57     68  96    33   59  
----28 668 33 24 19 57 96 59 52 72
接下来d=d/2(步长一定为整数,第二一定要取基数)3=5/2
依次进行排序
  28 68 33 24 19 57 96 59 52 72
最后:d=d/2=1
19 24 28 33 52 57 59 68 72 96 -------最终结果 
选择排序:
简单选择排序
57 68 59 52
最小值为52 和第一个交换  52 68 59 57
最小的是 57 和第二个交换  52  57 59 68
最小的为59 不需要交换   完成
堆排序:
什么是堆:n个元素的序列,满足父节点比子节点都要小或比他们都大,就是堆了
                     1
                 2         3
             4     5    6     7
          8     9
上面就是一个最小堆
56   79   56   38   40   84  建立最大堆
我们只需要把它们按照完全二叉树填入
因为   i<=n/2 就是有当父节点的
所以 i最大为第三个   56    和   84  交换
再看   79   和38   40 比较,不用换
再看   56     79   84 比较    和84 交换
84   79   56   38   40  46  再进行依次调整
再把   84---46 进行对调并断开指针  得到   84
再进行重新建立堆      依次类推   直到所有元素都取出来了   就是一个从大到小的堆
到这里,堆排序就完成了
交换排序:
一:冒泡排序算法:
57  68   59   52   
--------(倒数第一个元素)52和59进行排序   如果最后一个元素比倒数第二个元素小,交换
57 68    52   59
-------(倒数第二个元素)52和68   ,交换
57  52   68  59
-------------------52和57
52   57    68  59
-------对剩下的3个元素进行冒泡
     57     68   59
----------59 和68  交换
  57    59   68
----------59和 57  不交换
57   59    68
---68 和59 比较
完成
快速排序的思想:
采用分治法把大问题分解为同类型的小问题
拿出一个元素,把比它大的放一边,小的放另外一边
又用同样的方法,对抓出一个  元素   ,同样的处理
一步步的下去就把每一个小系列的都弄出来的,把结果拼合一下,就成功了
57   68    59   52   72   28   96   33   24   19
--19   68    59   52   72   28   96   33   24   57
---19--68 
57   68    59   52   72   28   96   33   24   19
归并排序:
57 68    59  52   72 28   96  33
57  68    52  59   28  72   33  96
接下来是四个四个一起然后有两个指针一个52   57 比较,然后交换
68和59比较然后进行交换
最后把这个系列组成一个更大的系列就形成了我们的答案.
基数排序:
这是一种比较简单的排序方法,因为它的过程比较容易,我们这里就不介绍了
使用合并操作来完成排序的算法
下面是各种算法的复杂读:

转载于:https://www.cnblogs.com/xianqingzh/archive/2008/04/02/1134529.html

你可能感兴趣的文章
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>