选择排序(简单选择排序,堆排序)&交换排序(冒泡排序,快速排序)

本文深入讲解了选择排序、堆排序、冒泡排序和快速排序等经典排序算法的原理与实现。详细介绍了每种排序方法的基本步骤,如选择排序的比较与交换过程,堆排序的大顶堆和小顶堆概念,冒泡排序的左右元素比较,以及快速排序的分区思想。通过图文并茂的展示和代码示例,帮助读者理解并掌握这些排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择排序

简单选择排序

比较+交换

从待排序序列中,找到关键字最小的元素;
如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。
在这里插入图片描述

堆排序

任意的叶子节点小于(或大于)它所有的父节点
对此,又分为大顶堆和小顶堆。
大顶堆要求节点的元素都要大于其孩子,小顶堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求。
在这里插入图片描述

交换排序

冒泡排序

1、将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素;( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;)对序列当中剩下的n-1个元素再次执行步骤1

2、动图展示:
在这里插入图片描述

3、代码展示:

template<class T>
void BubbleSort(T[], int n) {
	for (int i = 1; i < n; i++) {                    //共进行n - 1趟排序:从1到n-1,逐步缩小待排序列
		for (int j = n - 1; j >= i; j--) {           //反向检测,检查是否逆序
			if(T[j] > T[j - 1]){                     //发生逆序,交换元素的位置
				T temp = T[j];
				T[j] = T[j - 1];
				T[j - 1] = temp;
			}
		}
	}
}

软考的过程中,分享过后,对于排序方法和其代码都有了一定的理解,开心呐

·
·
快速排序
基本思想:通过一趟排序将待排的记录划分为独立的两部分,称为前半区和后半区。
前半区中记录的关键字均不大于后半区记录的关键字,然后再分别对这两部分记录继续进行快速排序,从而使整个序列有序。
在这里插入图片描述

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值