C语言学习系列二十三——数组排序查下标

找出数组最小值及其下标
例7-4
#include<stdio.h>
int main()
{
	int i,index,n;
	int a[10];
	
	printf("Enter n: ");
	scanf("%d",&n);
	
	printf("Enter %d :",n);
	for(i=0; i<n; i++)
		scanf("%d",&a[i]);
		
	index=0;                //假设为最小值
	for(i=1; i<n; i++)
		if(a[i] < a[index]) 
		index=i;
		
	printf("min=%d\tsub is%d\n",a[index],index);
	
	return 0;
}

Enter n: 6
Enter 6 :2 9 -1 8 1 6
min=-1  sub is2
再例7-4的基础上,最小值和第一个数交换
练习7-4
#include<stdio.h>
int main()
{
	int i,index,n;
	int a[10];
	
	
	printf("Enter n: ");
	scanf("%d",&n);
	
	printf("Enter %d :",n);
	for(i=0; i<n; i++)
		scanf("%d",&a[i]);
		
	index=0;
	
	for(i=1; i<n; i++)
		if(a[i] < a[index]) 
		index=i;
		
	printf("min=%d\tsub is%d\n",a[index],index);
	
		int temp;
		temp=a[index];
		a[index]=a[0];
	 	a[0]=temp;
	for(i=0; i<n; i++)
	{	
		printf("%d ", a[i] );
	 } 
			
	return 0;
}

Enter n: 6
Enter 6 :2 9 -1 8 1 6
min=-1  sub is2
-1 9 2 8 1 6
选择排序法从小到大排序
例7-5
#include<stdio.h>
int main()
{
	int i,index,k,n,temp;
	int a[10];
	
	printf("Enter n: ");
	scanf("%d",&n);
	
	printf("Enter %d:",n);
	for(i=0; i<n; i++)
	{
		scanf("%d",&a[i]);	
	}
	
	for(k=0; k<n-1; k++)
	{
		
		index=k;
		for(i=k+1; i<n; i++)
			if(a[i]<a[index])
			index=i;
		temp=a[index];
		a[index]=a[k];
		a[k]=temp;
				
	}
	
	printf("After sorted: ");
	  for(i=0; i<n; i++)
	  	printf("%d ",a[i]);
	printf("\n");
	
	
	return 0;
}

Enter n: 5
Enter 5:3 5 2 8 1
After sorted: 1 2 3 5 8
//投票情况统计
例7-6
#include<stdio.h>
int main()
{
	int i,r;
	int count[9];
	
	for(i=1; i<=8; i++)
		count[i]=0;
		
	for(i=1; i<=10; i++)
	{
		printf("Enter your r: ");
		scanf("%d",&r);
		if(r>=1&&r<=8)
			count[r]++;
		else
			printf("invalid:%d\n",r);
			
	}
	
	printf("result: \n");
	for(i=1; i<=8; i++)
		printf("%4d%4d\n",i,count[i]);
		
	return 0;
	
 } 

Enter your r: 3
Enter your r: 6
Enter your r: 7
Enter your r: 8
Enter your r: 9
invalid:9
Enter your r: 1
Enter your r: 2
Enter your r: 3
Enter your r: 4
Enter your r: 5
result:
   1   1
   2   1
   3   2
   4   1
   5   1
   6   1
   7   1
   8   1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值