16 数据结构和算法——排序算法总结及代码实现(冒泡,选择,插入,Shell,快速,堆,合并)

1. 冒泡排序:

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。案例如下:

java面试:冒泡排序详解 (Java经典编程案例)

Go面试: 实现冒泡排序 (Golang经典编程案例)

python面试:实现冒泡排序(python经典编程案例)

2. 选择排序:

java面试:选择排序代码实现 (Java经典编程案例)

Go面试:实现选择排序 (Golang经典编程案例)

python面试:实现选择排序(python经典编程案例)

3. 插入排序:

用Go语言 轻松实现插入排序 (Golang经典编程案例)

用Go语言 轻松实现插入排序 (Golang经典编程案例)

python面试:实现插入排序(python经典编程案例)

4. 希尔(Shell)排序:

希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序。

基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

python面试:实现希尔(shell)排序(python经典编程案例)

5. 快速排序:

用Go语言 实现快速排序 (Golang经典编程案例)

python面试:实现快速排序(python经典编程案例)

6. 堆排序:

堆排序是一种树形选择排序,是对直接选择排序的有效改进。

基本思想:堆的定义如下:具有n个元素的序列(k1,k2,…,kn),当且仅当满足时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。
若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如:

  1. 大顶堆序列:(96, 83,27,38,11,09)

  2. 小顶堆序列:(12,36,24,85,47,30,53,91)

7. 归并排序:

归并(Merge)排序法:是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

python面试:实现归并排序(python经典编程案例)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据知道

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

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

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

打赏作者

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

抵扣说明:

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

余额充值