C语言数组运算

数组运算例子
判断素数
构造素数表
欲构造n以内的素数表
1.令x为2
2.将2x,3x,4x直至ax<n的数标记为非素数
3.令x为下一个没有被标记为非素数的数,重复2;
   直到所有的数都已经尝试完毕

构造素数表
欲构造n以内(不含n)的素数表
1.开辟prime[n],初始化其所有元素为1,prime[x]为1表示x为素数
2.令x=2
3.如果x是素数,则对于(i=2;x*i<n;i++)令prime[i*x]=0
4.令x++,如果x<n,重复3,否则结束

#include <stdio.h>
int main(){			//从小到大构造一个素数表 
	int maxNumber;
	scanf("%d",&maxNumber);		//求maxNumber以内的素数 
	int isPrime[maxNumber];
	int i;
	int x;
	for (i=0;i<maxNumber;i++){		//先令isPrime里面的数据全为1 
		isPrime[i]=1;
	}
	for (x=2;x<maxNumber;x++){		//从2开始逐1来构建isPrime 
		if (isPrime[x]){			//如果是素数的 继续。。。 
			for (i=2;i*x<maxNumber;i++){		//将对i倍数的x都标记为0 即都标记为非素数 
				isPrime[i*x]=0;
			}
		}
	}
	for (i=2; i<maxNumber;i++){		//最后再遍历isPrime是1的数据 
		if(isPrime[i]){
			printf("%d\t",i);
		}
	}
	printf("\n");
}
/* 
算法不一定和人的思考方式相同 
*/ 

####################
搜索
在一个数组中找到某一个数的位置(或确认是否存在)
基本方法: 遍历

#include <stdio.h>
int search(int key,int a[],int len);
int main(){
	int a[]={3,25,45,78,65,21,47,52,12,};
	int r=search(12,a,sizeof(a)/sizeof(a[0]));
	printf("%d\n",r);
	return 0;		
} 
int search(int key,int a[],int len){
	int ret =-1;						//当没找到 就还是-1 
	for (int i=0;i<len;i++){
		if (key==a[i]){
			ret =i;
			break;
		}
	}
	return ret;
}

' 数据结构——散列表 hash table


二分法!!!——需要数据有序
*对大量数据进行搜索的时候,二分法效率高
搜索次数

###################################
排序
选择排序

 #include <stdio.h>			//选择排序 
 int max(int a[],int len){		//找最大值的位置 
 	int maxid=0;
 	for(int i=1;i<len;i++){
 		if(a[i]>a[maxid]){
 			maxid=i;
		 }
	 }
	 return maxid;
 } 
 int main(){
 	int a[]={2,45,4,90,14,365,54,65,11,};
 	int len=sizeof(a)/sizeof(a[0]);
 	for (int i=len-1;i>0;i--){
	 	int maxid=max(a,i+1);
		int t=a[maxid];
		a[maxid]=a[i];
		a[i]=t;
	}
	for( int i=0;i<len;i++){
		printf("%d\t",a[i]);
	}
}

#######################################################

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

99Kies

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值