【数据结构 | 直接选择排序】

直接选择排序

基本思路

直接插入排序(StraightInsertionSort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。

c 复制代码

我们可以同时从数组的头部和尾部同时进行排序工作:

我们首先使用maxmin 两个变量来记录最大和最小值,初始化同时为数组第一个数字

然后通过遍历整个数组,更新max和min

然后吧最小数 交换至数组头部.吧最大数 交换至数组尾部

缩短数组范围,再重复以上步骤,即可。

直接插入排序

c 复制代码

按照以上步骤完成代码。

我们有如下数组需要排序

c 复制代码

结果如下:

为什么出错了?

c 复制代码

修改如下:

结果如下:

SelectSort

c 复制代码
//直接插入排序
void SelectSort(int* a, int n)
{
	int begin = 0, end = n - 1, i;
	while (begin < end)
	{
		int min = begin, max = begin;
		//同时排头和尾
		for (i = begin + 1; i <= end; i++)
		{
			if (a[i] < a[min])
				min = i;
			if (a[i] > a[max])
				max = i;
		}
		Swap(&a[min], &a[begin]);
		if (begin != max)
		{
			Swap(&a[max], &a[end]);
		}

		begin++;
		end--;
	}
}
相关推荐
学困昇14 小时前
Linux IPC 详解:匿名管道、命名管道、共享内存与信号量
linux·运维·服务器·c语言·c++·人工智能
happymaker062614 小时前
LeetCodeHot100——128.最长连续序列
算法
余生皆假期-14 小时前
配置 CodeX 环境的 Simlink AI 工具链
笔记·单片机·嵌入式硬件·算法
qq_2965532714 小时前
[特殊字符] 旋转排序数组中的高效搜索:从线性到二分查找的进阶之路
数据结构·算法·搜索引擎·分类·柔性数组
纪念 22915 小时前
顺序表(数据结构入门的开端)
数据结构
汉字萌萌哒15 小时前
2025 CSP-S提高级(第一轮)C++真题以及答案
数据结构·算法
明志数科15 小时前
仿真数据与真实数据:机器人训练的数据策略选择
人工智能·算法·机器学习
weyyhdke15 小时前
2026电源与MCU控制设计实战:用Gemini3.5镜像站免费优化开关电源环路与电机FOC算法硬核教程
单片机·嵌入式硬件·算法
小张成长计划..15 小时前
【C++】35:位图,布隆过滤器和海量数据处理(哈希扩展)
算法·哈希算法
z2005093015 小时前
今日算法(组合问题III)(回溯的使用)
java·算法·leetcode