第八章数组总结

第八章数组总结
一、数组的定义和初始化
数组基类型 数组名称 数组长度
1.[ ]中的数既数组的下标,下标的个数表示数组的维度
2.C语言中的数组下标都是从0开始的,这个数上的数组没有定义
3.在定义数组时不能使用变量定义数组的大小,可以在头部通过定义宏常量来定义不确定长度的数组。
4.二维数组的定义: 类型 数组名[第一维长度][第二维长度];(不能忽略第二维数组的长度)
二、数组的输入,赋值与输出
用循环语句将需要的值挨个输出输入赋值
三、排序
1.选择排序
第i次选择排序通过n-1次数组值的比较,从中选出最大或最小的一个放在第i个位置上,即第一次排序从所有数中挑出最大(小)的数放在第一个的位置上,第二次从第二个到最后一个中跳出来……以此类推

#include<iostream>
#define N 100
int a[N];
int main()
{
	int k,n,t;
	for(int i=0;i<n-1;i++)
	{
		k=i;
		for(int j=k+1;j<n;j++)
		{
			if(a[j]<a[k])  k=j;/*选择的过程*/
			if(i!=k)
			{
				t=a[i];
				a[i]=a[k];
				a[k]=t;
			}/*交换的过程*/
		}
	}
}

2.冒泡排序
通过相邻两个数之间的比较交换使较小或较大的数冒泡上升或沉底

#include<iostream>
#define N 100
int a[N];
using namespace std;
int main()
{
	int n,t;
	cin>>n;
	for(int i=0;i<n;i++)  cin>>a[i];
	for(int i=0;i<n-1;i++)
	for(int j=0;j<n-1-j;j++)
	{
		if(a[i]>a[i+1])
		{
			t=a[i];
			a[i]=a[i+1];
			a[i+1]=t;
		}
	}
}

3.插入排序
两个数比较交换,通过第三个的比较插入排序

#include<iostream>
#define N 100
int a[N];
using namespace std;
int main()
{
	int num,temp,l;
    for(int i=1;i<num;i++)
		    
	{
		         
	l= i-1;temp=a[i];
		        
	 while(l>=0&&a[l]>temp)
		       
	  {       
                         
			 a[l+1]=a[l];
			
			  l--;
		        
			  }
		       
			   a[l+1]=temp;
        
			            }
            
						 }

4.排序函数
#include sort(数组开始,数组结束) sort(a,a+n)
四、二分查找
思想:将数组分开,通过与中间值得比较,每次将查找范围缩小一半,大大缩小了时间
先排序,后查找

#include<iostream>
#define N 100
int a[N];
using namespace std;
int main()
{
	int n,low,high,mid,temp;
    low=0,high=n-1,mid=0;
		  
	 while(low<=high)
		    
	  {
                    
	  mid=(low+high)/2;
                    
	  if(a[mid]>temp)
                        
	  high=mid-1;
                    
	  else if(a[mid]<temp)
                              
	  low=mid+1;
                            
	  else
  cout<<a[mid]<<endl;
  
	          
                 
	 } 
	 
cout<<"Not Found!"<<endl;
	 
}   		
             

一点点字符串数组
因为字符串数组还没有学太多所以只写一点点会的。
头文件include
计算字符数量的函数strlen()
输入
printf 只能输入空格前的
gets()可以输入空格
在最近的学习和做题过程中,确确实实的感受到了一定的难度,很多题目看上去简单,但是真正做了之后才发现,却很难达到题目要求。还有很多题目,虽然做出来了,却很麻烦,甚至有的题目会超时。还是那个问题,在以后学习的过程中,还是要注意思路,集思广益,注意积累。争取能够写出更简单,更符合要求的程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值