【数据结构】排序算法(下)——插入、希尔、选择、堆、冒泡、快速、归并与计数排序

本文详细介绍了八大排序算法——直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序的接口实现步骤和代码,包括直接插入、希尔、选择、堆、冒泡、快速、归并和非比较的计数排序等。通过这些接口实现,读者能更好地理解和掌握各种排序算法的核心思想。
摘要由CSDN通过智能技术生成

目录

🤠前言🤠:

🤯排序算法功能接口实现(八大排序算法)🤯:

1.插入排序:

①.直接插入排序算法:

2.选择排序: 

①.直接选择排序算法:

②.堆排序算法:

3.交换排序:

①.冒泡排序算法:

②.快速排序算法:

4.归并排序(归并排序算法):

5.非比较排序(计数排序算法):

🥳总结🥳:


🛰️博客主页:✈️銮同学的干货分享基地

🛰️欢迎关注:👍点赞🙌收藏✍️留言

🛰️系列专栏:🎈 数据结构

                       🎈【进阶】C语言学习

                       🎈  C语言学习

🛰️代码仓库:🎉数据结构仓库

                       🎉VS2022_C语言仓库

        家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我真重要,各位路过的友友麻烦多多点赞关注,欢迎你们的私信提问,感谢你们的转发!

        关注我,关注我,关注我,你们将会看到更多的优质内容!!


🏡🏡 本文重点 🏡🏡:

🚅 八大常见排序算法接口功能实现 🚏🚏

🤠前言🤠:

        前面我们对八种不同的排序算法的基本思想和实现原理,以及它们各自的算法特性都有了一定的了解,而今天我们将要深入实现插入、希尔、选择、堆、冒泡、快速、归并与计数这八大排序算法各自的接口功能

🤯排序算法功能接口实现(八大排序算法)🤯:

        这一部分便是我们今天学习内容的重点,各位小伙伴们务必牢固掌握。

1.插入排序:

①.直接插入排序算法:

接口实现步骤:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取下一个元素 tem,从已排序的元素序列从后向前扫描
  3. 如果该元素大于 tem,则将该元素移到下一位
  4. 重复步骤 3,直到找到已排序元素中小于或等于 tem 的元素
  5. 将 tem 插入到该元素的后面,如果已排序所有元素都大于 tem,则将 tem 插入到下标为 0 的位置
  6. 重复步骤 2 ~ 5,直至完成排序。

直接插入排序算法接口代码实现:

void InsertSort(int* arr, int n)
{
	for (int i = 0; i < n - 1; ++i)
	{
		int end = i; // 记录有序序列最后一个元素的下标
		int tem = arr[end + 1]; // 待插入的元素
		while (end >= 0) // 单趟排
		{
			if (tem < arr[end]) // 比插入的数大就向后移
			{
				arr[end + 1] = arr[end];
				end--;
			}
			else // 比插入的数小,跳出循环
			{
				break;
			}
		}
		arr[end + 1] = tem; // tem放到比插入的数小的数的后面
		//代码执行到此位置有两种情况:
		//1.待插入元素找到应插入位置(break跳出循环到此)
		//2.待插入元素比当前有序序列中的所有元素都小(while循环结束后到此)
	}
}

②.希尔排序算法:

接口实现步骤:

  1. 选定一个小于 N 的整数 gap 作为第一增量,然后将所有距离为 gap 的元素分在同一组,并对每一组的元素进行直接插入排序
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

銮崽的干货分享基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值