用C语言创建一个有序数组

目录

一.思路

二.代码

三.思考

四.rand函数


一.思路

//01数字随机生成a[10]的数据,(1-100),
 //   rand是0->num-1; 
 //02找到最小值;
 //03把最小值,与a[0]位置进行交换;
 //04把最大值,与a[9]位置进行交换;
 //05使得数组有序(选择排序);

二.代码

 #include "stdio.h"
 #include "stdlib.h"
 //01数字随机生成a[10]的数据,(1-100),
 //   rand是0->num-1; 
 //02找到最小值;
 //03把最小值,与a[0]位置进行交换;
 //04把最大值,与a[9]位置进行交换;
 //05使得数组有序(选择排序);
 main(){
 	int a[10];//array是数组的意思,数组用a 
 	int num;
 	int i;
 	int j; 
 	int n;
 	
    int min;
	int max;
	int flag;//记录下标 
	int data;
 	
	 //01
 	//生成数组中随机数据 
 	n=10;
 	num=100;
 	
 	for(i=0;i<n;i++){
 		a[i]=rand()%num+1;
	}
	
	//打印数组 
	for(i=0;i<n;i++){
	    printf("%4d",a[i]);	
	} 
	printf("\n");
	
	//02
	//找到最小值
	min=a[0];
	flag=0;
	for(i=0;i<n;i++){
		if(min>a[i]){
			min=a[i];//找到最小值的值 
			flag=i;//记录最小值的位置 
		}
	} 
	
	//03
	//交换min到a[0]的位置
	data=a[flag];
	a[flag]=a[0]; 
	a[0]=data;
	
	//打印
	 for(i=0;i<n;i++){
	    printf("%4d",a[i]);	
	} 
	printf("\n");
	
	//04找最大值,将最大值放到数组最后
	//找最大值 
	max=a[0];
	flag=0;
	for(i=0;i<n;i++){
		if(max<a[i]){
			max=a[i];
			flag=i;
		}
	} 
	
	//交换位置 
	data=a[flag];
	a[flag]=a[9];
	a[9]=data;
	
	//打印 
	for(i=0;i<n;i++){
	    printf("%4d",a[i]);	
	} 
	printf("\n");
	
	//05
	//交换min到a[j] 
	 for(j=0;j<n-1;j++){
	 	//数组元素有10个,比9次就可以
		 //第一次比10个数,第二次比9个数 
	 	min=a[j];
	    flag=j;//前面的已经排好顺序了,从后面开始比较 
	    for(i=j;i<n;i++){
	    	if(min>a[i]){
	 		    min=a[i];
	 		    flag=i;
		    }
		}
		 data=a[flag];
	     a[flag]=a[j];
	     a[j]=data;
	 }
	 
	 for(i=0;i<n;i++){
	    printf("%4d",a[i]);	
	} 
	printf("\n");
}

三.思考

1.打印这部分代码实际上是遍历一个数组,跟打印链表类似。

2.选择排序,总共10个数,第一次比10个数,第二次比后面9个,依次类推,因为前面的已经是排好的了,只需要排后面的即可实现有序。

四.rand函数

  • 若要生成 a 与 b 之间的随机实数,应使用: RAND()*(b-a)+a

  • 如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。 [3] 

公式

说明(结果)

=RAND()

介于 0 到 1 之间的一个随机数(变量)

=RAND()*100

大于等于 0 但小于 100 的一个随机数(变量)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值