随机数初始化数组然后用选择法(三种,细微的区别)对数组进行排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>//时间头文件 
int main()
{
	time_t ts;//设置时间变量 
	unsigned int randdata = time(&ts);//获取时间,转换为无符号int 
	srand(randdata);//设置随机数种子
	int a[10];
	//用随机数初始化数组
	for(int i=0;i<10;i++)
	{
		a[i] = rand()%100;//0--99
		printf("%d,%x\n",a[i],&a[i]);
	} 
	printf("-----------------------------------------------------\n");
	//下面的代码块是求最大值 
	{
		int max;//最大值下标
		max = 0;//假设a[0]最大
		//求最大值
		for(int i=1;i<10;i++)
		{
			printf("%d,%d,%d,%d\n",i,max,a[i],a[max]);
			if(a[i]>a[max])
			{
				max = i;
			}
		} 
		printf("最大值a[max]=%d\n",a[max]);
	}
	//下面的代码块是选择排序
	{
		for(int i=0;i<9;i++)
		{
			int min = i;//假设是当前最小值的下标 
			for(int j=i+1;j<10;j++)
			{
				if(a[j]<a[min])
				{
					min = j;
				}
			}
			if(min!=i)//下标相同表明下标没有交换,就无需交换数据 
			{
				int temp = a[min];//temp保存最小值
				a[min] = a[i];
				a[i] = temp;//数据交换 
			}
		}
		printf("第一种选择排序后数组的结果如下:\n"); 
		for(int i=0;i<10;i++)
		{
			printf("%d\t",a[i]);
		} 
	} 
	{
		for(int i=0;i<9;i++)
		{
			for(int j=i+1;j<10;j++)
			{
				if(a[i]>a[j])
				{
					int temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}
		printf("第二种选择排序后数组的结果如下:\n"); 
		for(int i=0;i<10;i++)
		{
			printf("%d\t",a[i]);
		} 
	}
	{
		int min,temp;
		for(int i=0;i<9;i++)
		{
			min = i;
			for(int j=i+1;j<10;j++)
			{
				if(a[j]<a[min])
				{
					min = j;
				}
			}
			temp = a[min];
			a[min] = a[i];
			a[i] = temp;
		}
		printf("第三种选择排序后数组的结果如下:\n"); 
		for(int i=0;i<10;i++)
		{
			printf("%d\t",a[i]);
		} 
	} 
	return 0;
} 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。