排序(冒泡、插入、希尔、堆、归并)

本文深入讲解了冒泡排序、插入排序及堆排序三种经典排序算法的实现原理与伪代码。冒泡排序通过反复比较相邻元素并调整顺序;插入排序则逐个插入元素至正确位置;堆排序利用最大堆特性调整元素位置,最终实现有序排列。

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

冒泡排序

思想: 相邻两个元素比较大小,将最大或最小的依次放到最后
在这里插入图片描述
伪代码

void Bubble_Sort(ElementType A[], int N)
{
	for(int p = N-1; P >= 0; P--)
	{
		flag = 0;
		for(int i = 0; i < p; i++)
		{
			if(A[i] > A[i+1])
			{
				swap(A[i], A[i+1]);
				flag = 1; // 标记发生了交换 
			}
		}
		if(flag == 0) break;// 全程无交换  
	}
}

插入排序
思想:插入一个数找到其对应的位置
在这里插入图片描述
伪代码:

void Insertion_Sort(ElementType A[], int N)
{
	for(P = 1; P < N; P++)
	{
		Tmp = A[p]; // Tmp 下一个数
		for(int i = p; i>0 && A[i-1]>Tmp; i--)
			A[i] = A[i-1]; //移出空位 
		A[i] = Tmp;// 新的数入位 
	}
 } 

堆排序

初始各元素的位置
在这里插入图片描述
将最大的元素调整到最下面,然后继续调整剩下的
在这里插入图片描述
在这里插入图片描述
伪代码:

void Heap_Sort(ElementType A[], int N)
{
	for(int i = N/2; i >= 0; i--) // 建立最大堆 
		PercDown(A, i, N);// 向下过滤的子函数  i->根结点所在的位置  N->当前这个堆一共有多少元素 
	for(int i = N-1; i > 0; i--)
	{
		swap(&A[0], &A[i]); 
		PercDown(A, 0, i); // 0->根结点    i->当前这个堆一共有多少元素   
	}
 } 

待更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值