排序算法总结

堆排序

原则:升序使用大顶堆 ,降序使用小顶堆
以升序为例,原理:

  • 首先按照数组的顺序创造一颗二叉树
  • 从最后一个非叶子节点看起,(最后一个非叶子节点就(arr,length-1)/2)
  • 如果该节点小于其中的子节点 就交换顺序 一直这样搞
  • 这个二叉树就成为了一个大顶堆 这个时候 根节点(数组的第一个元素)就是最大的
  • 交换数组的首位元素
  • 这时候只考虑数组的长度-1的情况 因为最后一个是最大的 排好了xu就不用管
  • 继续上面的操作 第二大数字就放在了数组头部 交换数组第一个和倒数第二个的元素
  • 这样持续下去,数组就 排好序了
    在这里插入图片描述
    比如上面的树,经过第一轮的调整,9就会成为根节点!依次类推…

基数排序

基排序的原理:

  • 先根据个位数,将数字放入到0~9的盒子里面(比如12 放到2号盒子)
  • 然后按照从左到右,先放进去的先取出来 这种方法再次排成一个序列(先取1号盒子 再取2号盒子…)
  • 接着根据十位数 继续以上的操作 直至根据到最大的位数 此时就排好序了
    在这里插入图片描述

归并排序

首先讲一下什么是归并:
在这里插入图片描述
比如 3,8,2,4,1,5,4,6
分割:3,8,2,4||1,5,4,6
但是分割的还是不够小啊
继续分割:3,8||2,4 ||| 1,5||4,6
还是不够小 3|8 || 2|4 ||| 1|5 || 4|6
1.数组【3】和【8】,归并结果为【3,8】 2、数组【2】和【4】,归并结果为【2,4】 右边的部分也一样
然后归并后的【3,8】和归并后的【2,4】再次进行归并操作 结果为【2,3,4,8】
至此左边排好序了 右边同理 结果为【1,4,5,6】
然后左边和右边进行最后的归并
最终结果为:【1,2,3,4,4,5,6,8】

快速排序

快速排序原理:

  • 比如: 【2,4,1,3,5】
  • 先定位光标【2!,4,1,3,5!】(!代表光标)
    *先把第一个数字取出来 作为标准stard=2
  • 最后一个数字比标准大 光标前移
  • 【2!,4,1,3!,5】
  • 依旧是这样的,所以继续前移【2!,4,1!,3,5】
  • 发现此时后光标对应的数字比标准小 则用后光标对应的数字覆盖前光标【1!,4,1!,3,5】
  • 此时我们只需要看前光标,嗯前光标比标准小 前光标后移【1,4!,1!,3,5】
  • 此时前光标比标准大 用前光标对应的数字覆盖后光标【1,4!,4!,3,5】
  • 此时应该看后光标了 后光标比目标大 后光标前移【1,4!!,4,3,5】
  • 此时两个光标重合:我们就用标准代替这个重合的元素【1,2,4,3,5】
  • 至此第一轮排序完结!!!!!!!!!!
  • 接着把1当成标准 再次这样操作 经过反复操作 数组最后就会排好序

插入排序

原理:比如一个数组:2! 1 6 0
看第一个数字
只要前面没有数字比此数字大,就向看下一个
2 1! 6 0
如果前面有数字比它大,就要进行调整,前后相邻的交换顺序,使他符合要求
1 2 6 0
看第3个数字…
看第4个数字
调整为0 1 2 6

希尔排序

插入排序的优化
在这里插入图片描述
不断的除以2确认步长
比如说上面的:步长为9/2=4
然后按照步长,对相同步长的数字进行插入排序
第一组2 1 0 排好后是 0 1 2
第二组是5 8

排好后,步长再除以2
继续操作,直到步长为1

选择排序

选择排序原理:
大致思想是这样的:
第一轮:通过循环比较,找到值最小的数的下标,与数组 第一个数字进行交换
第二轮比较,就不用看第一个数字了,循环找到后面最小的数字下标,跟数组第二个数字进行交换…

就这样搞下去,数组就会被排好序!

冒泡排序

原理:
n个数字的数组就比较n轮
第一轮的循环中,只要发现后面有数字比数组中第1个数字小,就交换顺序,所以经过了第一轮后,数组第一个数字为最小值
第二轮就不看第一个数字了,从第二个数字开始循环比较

最终数组就排好序了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘歌唱家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值