【数据结构】排序之交换排序(冒泡

您所在的位置:网站首页 选择排序和交换排序的基本思想 【数据结构】排序之交换排序(冒泡

【数据结构】排序之交换排序(冒泡

2024-07-12 11:25| 来源: 网络整理| 查看: 265

交换目录 1. 前言2. 交换排序3. 冒泡排序3.1 分析3.2 代码实现 4. 快速排序4.1 hoare版本4.1.1 分析4.1.2 hoare版本代码 4.2 挖坑法4.2.1 分析4.2.2 挖坑法代码实现 4.3 前后指针版本4.3.1 分析4.3.2 前后指针版本代码实现

1. 前言

在之前的博客中介绍了插入排序,有需要的可以点这个链接: link,这次来介绍交换排序,包括冒泡和快排。 话不多说,正文开始。

2. 交换排序

基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。

交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。

交换排序这里介绍冒泡排序和快速排序,来一起看看。

3. 冒泡排序

在这里插入图片描述 动图形象的展示了冒泡排序的过程。

冒泡排序的特性总结:

冒泡排序是一种非常容易理解的排序时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定 3.1 分析

交换排序肯定离不开交换,就先写一个Swap。

void Swap(int* p1, int* p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; }

同样的方法,先实现单趟排序,如果前一个大于后一个就交换,把最大的放在了最后。 得注意把控区间的位置,如果if中的代码是a[i+1]>a[i],那么上面循环的区间就是从0到n-1。 在这里插入图片描述 第一趟的位置在n-1,那么第j趟就是n-j。 所以对于总的来排,就在外面套一个循环,也就是: 在这里插入图片描述 来看看使用结果 在这里插入图片描述 如果说没有给定的数据已经排好序了,就不用经行交换了,就加一个标志bool exchange = false,如果交换了就变为true。 在这里插入图片描述

3.2 代码实现 void Swap(int* p1, int* p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; } void BubbleSort(int* a, int n) { for (int j = 0; j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3