栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

选择排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

选择排序算法

选择排序

1.前言2.实现3.总结4.更新日志

1.前言

较为简单,在实现过程中不断地进行,选择一个元素,并与后面的所有元素依次比较

2.实现

在未排序序列中找到最小(大)元素,放到起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。

#include 
#include 
#include 
#define NUM 7
#define swap(a,b) {int t=a;a=b;b=t;}  //宏定义交换函数

//void SelectionSort1(int* a)    //选择排序1
//{
//	int i, j;
//	for (i = 0; i < NUM - 1; i++)
//	{
//		for (j = i + 1; j < NUM; j++)
//		{
//			if (a[i] > a[j])
//				swap(a[i], a[j]);
//		}
//	}
//}


void SelectionSort2(int* a)        //选择排序2
{
	int i, j;
	for (i = 0; i < NUM - 1; i++)
	{
		int temp = i;
		for (j = i + 1; j < NUM; j++)
			if (a[temp] > a[j])        //找到最小值
				temp = j;         //记录
		swap(a[temp], a[i]);     //交换
	}
}
int main()
{
	srand((unsigned int)time(NULL));    //设置随机种子 (time的返回类型为size_t)
	int a[NUM];
	int i;
	for (i = 0; i < NUM; i++)
		a[i] = rand() % 100;
	for (i = 0; i < NUM; i++)
		printf("排序前: %d ", a[i]);
	//SelectionSort1(a);       //选择排序1
	SelectionSort2(a);        //选择排序2
	printf("n");
	for (i = 0; i < NUM; i++)
		printf("排序后: %d ", a[i]);
	return 0;
}
3.总结

时间复杂度为 O(n²)
但不用占据额外的空间

4.更新日志

2022.2.06 整理上传(C)

欢迎交流、指正、补充、讨论~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号