选择排序过程模拟

选择排序是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕

可以使用for循环完成操作

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

const int MAXN = 10005;
const int INF = 0x3f3f3f3f;

int num[MAXN];
int arr[MAXN];
bool flag[MAXN];

void P(int n)
{
	for(int i = 1; i <= n; i++)
	{
		int MIN = INF;
		int temp = 0;
		for(int j = 1; j <= n; j++)
		{
			if(num[j] < MIN && flag[j] == false)
			{
				temp = j;
				MIN = num[j];
			}
		}
		arr[i] = num[temp];
		flag[temp] = true; 
	}
	for(int i = 1; i <= n; i++)
		num[i] = arr[i];
}

int main()
{
	int n;
	while(~scanf("%d", &n))
	{
		memset(num, 0, sizeof(num));
		memset(flag, false, sizeof(flag));
		for(int i = 1; i <= n; i++)
			scanf("%d", &num[i]);
		P(n);
		for(int i = 1; i <= n; i++)
			printf("%d ", num[i]);
		printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/someone_and_anyone/article/details/80942172
今日推荐