排序算法——交换排序

本文主要探讨交换排序方法,重点解析冒泡排序及其改进版,同时提及快速排序的原理。冒泡排序通过不断交换相邻元素实现排序,改进后的冒泡排序提高了效率。快速排序则采用分治策略,平均时间复杂度更低,是交换排序中效率较高的算法。

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

       交换排序的基本思想:两两比较待排序元素的关键字,发现两个元素的次序相反时则进行交换,直到没有反序的元素为止。

1. 冒泡排序

/**
 * 交换排序
 *
 * 算法:冒泡排序(Bubble Sort)
 * 输入:待排序元素的数组,待排序元素个数
 * 输出:
 * 原理:通过无序区中相邻元素间关键字的比较和位置的交换,使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”。
         整个算法是从最小面的元素开始,对每个相邻的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,经过一趟冒泡排序后,关键字最小的元素到达最上端。
	 接着,再在剩下的元素中找关键字次小的元素,并把它换到第二个位置上。以此类推,直至遍历所有元素。
 * 过程:
 *  1)从最后一个元素R[n-1]开始,两两相邻元素比较,直至R[0]
 *  2)在比较的过程中,如果R[j].key<R[j-1].key,则交换两者的位置,即,使关键字较小的元素换至关键字较大的元素之上
 *  3) 经过第一次遍历,最小的元素为R[0]
 *  4)从最后一个元素R[n-1]开始,两两相邻元素比较,直至R[1],经过第二次遍历,次小的元素为R[1]
 *  5)重复上述操作
 *  6)...
 *  7)最终得到的R[0..n-1]中的元素递增排序
 *
 * 时间复杂度为O(n^2),空间复杂度为O(1),稳定的排序方法
 * 比直接插入排序要差
 */
void bubbleSort(RecType R[], int n)
{
	int i, j;
	RecType tmp;
	for (i = 0; i < n - 1; i++)
	{
		//从R[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值