经典算法之直接选择排序

 作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

刷题图示:

​编辑

算法介绍:

输入:

输出:

图示过程:

实例演示:

代码展示:

时间复杂度:

空间复杂度:

刷题网站图示:

算法介绍:

直接选择排序也称为简单选择排序,整个过程就是每一趟都将无序区中的所有元素进行逐一比较,找到最小元素(根据要求可以最大-降序)让后与无序区首个元素进行比较

输入:

我们可以把n个数的序列放到数组中(可有序可无序)

输出:

 输出一个有序数列(升序或降序)

图示过程:

实例演示:

初始关键字:『 8,5,2,6,10,3,1,4,0,7 』

 第一趟排序后:0,『5,2,6,10,3,1,4,8,7』

 第二趟排序后:0,1,『2,6,10,3,5,4,8,7』

 第三趟排序后:0,1,2,『6,10,3,5,4,8,7』

 第四趟排序后:0,1,2,3,『10,6,5,4,8,7』

 第五趟排序后:0,1,2,3,4,『6,5,10,8,7』

 第六趟排序后:0,1,2,3,4,5,『6,10,8,7』

 第七趟排序后:0,1,2,3,4,5,6,『10,8,7』

 第八趟排序后:0,1,2,3,4,5,6,7,『8,10』

 第九趟排序后:0,1,2,3,4,5,6,7,8,『10』
直接得出最后结果:0 1 2 3 4 5 6 7 8 10

代码展示:

# include <stdio.h>
int a[100];
int main()
{
	int n;
	scanf("%d",&n);
	a[n];
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	int k;
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				k=a[i];
				a[i]=a[j];
				a[j]=k;		
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		printf("%d ",a[i]);
	}
	
 } 

测试结果:

时间复杂度:

因为有两层for循环  而且每个都要进行比较 所以时间复杂度为O(n^2);

空间复杂度:

只有一空间变量 k,所以它空间复杂度则为常数O(1);

猜你喜欢

转载自blog.csdn.net/m0_61469860/article/details/126217048