数据结构_排序算法(交换排序)

本文介绍了交换排序的基本思想,包括冒泡排序和快速排序两种类型。冒泡排序通过相邻记录的比较和交换,时间复杂度为O(n^2),而快速排序作为冒泡排序的改进版,通过非相邻记录的交换能更有效地消除逆序,其时间复杂度为O(nlogn)。
摘要由CSDN通过智能技术生成

排序算法

交换排序

基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求则进行交换,直到整个序列满足要求为止。

分类:根据交换思想的不同,可以将交换排序分为:冒泡排序和快速排序。

1.冒泡排序

  • 冒泡排序是一种最简单的交换排序算法,通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”,或者使关键字大的记录如石块一样逐渐向下“坠落”
  • 分析:时间复杂度O(n^2),空间复杂度O(1),算法稳定。
#include <stdio.h>

//常规版本的冒泡排序 
void BubbleSort(int * S, int n)
{
	int i, j, temp;
	
	for(i = 1; i <= n-1; i++)  //排序几趟 
	{
		for(j = 1; j <= n-i; j++) //每趟比较几次
		{
			if(S[j-1] > S[j])  //存在逆序 
			{
				temp = S[j-1];  
				S[j-1] = S[j];  //进行交换 
				S[j] = temp;
			}
		 } 
	}
}

//改进版本的冒泡排序(增加一个标志位flag)
void NewBubbleSort(int * S, int n)
{
	int i, j, temp;
	int flag = 1;
	
	for(i = 1; i<=n-1 && flag==1; i++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值