选择排序(C语言)

一、步骤

选择排序的基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。

1.首先,我们先建立一个乱序数组,如:

2.其次,我们遍历数组选出最大或最小的元素,与数组的尾部或首部位置的元素位置互换。在这里,为了提高效率,我们可以遍历一遍把最大和最小的元素一起选出,然后放到该在的位置。

3.重复上述步骤即可

图片详述:

二、代码

复制代码
void Swap(int* p1, int* p2)
{
	int tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
void SelectSort(int* arr, int n)
{
	int begin = 0, end = n - 1;
	while (begin < end)
	{	
		int maxi = begin, mini = begin; 
		for (int i = begin; i <= end; i++)
		{
			if (arr[i] < arr[mini])
			{
				mini = i;
			}
			if (arr[i] > arr[maxi])
			{
				maxi = i;
			}
		}
		Swap(&arr[begin], &arr[mini]);
		if (begin == maxi) //begin的位置可能和maxi的位置重合,当执行上述
                             代码Swap(&arr[begin], &arr[mini])时,
                             begin位置的元素可能会跑到mini位置上去
		{
			maxi = mini;
		}
		Swap(&arr[end], &arr[maxi]);
		begin++;
		end--;
	}
}
相关推荐
JAVA面经实录9177 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
浅念-7 小时前
「一文吃透 BFS:从层序遍历到锯齿形、最大宽度、每层最大值」
数据结构·算法
苍煜9 小时前
二叉树、红黑树、B树、B+树通俗教学:各自适配场景+MySQL索引终极选型原因
数据结构·b树·mysql
炸膛坦客10 小时前
嵌入式 - 数据结构与算法:(1-1)数据结构 - 顺序表(Sequential List)
数据结构·算法·嵌入式
水龙吟啸10 小时前
数据结构与算法随机复习–Day1
数据结构·c++·算法
无限进步_12 小时前
C++ 多态机制完全解析:从虚函数重写到动态绑定原理
java·c语言·jvm·数据结构·c++·windows·后端
无限进步_15 小时前
二叉搜索树完全解析:从概念到实现与应用场景
c语言·开发语言·数据结构·c++·算法·github·visual studio
爱写代码的倒霉蛋17 小时前
2022年天梯赛L1-8真题解析(哈希+排序)
数据结构·算法
代码中介商17 小时前
顺序表完全指南:从原理到实现
数据结构·顺序表
澈20717 小时前
C++ list容器完全指南
数据结构·c++·链表