C++较简单算法学习笔记

这只是本人学习C++笔记,请不要用来参考,若有问题,欢迎提出

数据元素插入

在数组中插入数据时,要将最后一个元素逐个向后移动,直到插入位置,然后将要插入的数据插入数组
示例:

void charuyuansu(int x,int k,int *a,int n){ 
	/*x为插入数据,
	k为插入位置,
	a为插入数组,
	n为数组长度,
	所有数据都以0为开始
	*/
	for(int i=n;i>k;i--) a[i+1]=a[i];
	a[k]=x;
}

数组元素删除

当删除数组中一个元素时,要把从删除位置之后的所有元素向前移动一个位置
示例:

void shanchuyuanzu(int k,int n,int *a){
	/*
	k为删除元素的位置,
	n为数组长度,
	a为数组
	所有数据都以0开始
	*/
	for(int i=k;i<n;i++) a[i]=a[i+1];
}

无序查找

简单的遍历所有元素,一个一个校对,效率极低
示例:

void wuxuchazhao(int *a,int n,int key){
	/*
	a为数组,
	n为数组长度,
	key为关键字,
	所有数据都以0开始
	*/
	for(int i=0;i<n;i++){//遍历整个数组
		if(a[i]==key) cout<<i<<" find\n";//如果找到,输出位置 find
	}
}

折半查找

前提:数组有序;效率较高
示例:

void zhebanchazhao(int *a,int L,int R,int key){
	/*
	a为数组,
	L为起始位置,
	R为终止位置,
	key为关键字
	所有数据都以0开始
	*/
	int mid;//得到中间数据的位置
	while(L<=R){
		mid=(L+R)/2;//得到中间数据的位置
		if(key==a[mid]) break;//如果找到,跳出循环
		if(key<a[mid]) R=mid-1;//如果关键字比比较数据小,将R移到现在位置的左边
		else if(key>a[mid]) L=mid+1;//如果关键字比比较数据大,将R移到现在位置的右边
	}
	if(L<=R)//如果L没有超过R,即在正常结束循环前跳出循环
		cout<<mid;//输出这个位置
	else//否则
		cout<<"没找到";//输出没找到
}

以上程序大概是没有问题的(只是函数的参数设置的有点乱。。。还要再改一下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值