数组总结

 

数组的概念:

按顺序排列的一组同种类型的数据构成的集合。

  注:一个数组在内存中占一片连续的存储单元

一、一维数组

1.数据类型 数组名[整数1][整数2]……[整数n]

       int a[5];

注:数组大小必须是值为正的常量,不能为变量。

一旦定义不能改变大小,数组大小最好用宏来定义

以应变未知的可能变化。

2.int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}

注:数组定义后的初值仍然是随机数,一般需要我们来初始化。

  int a[5]={12,34,56,78,9}

3.数组名[下标]

区数组下标(index)都是从开始

使用a[0]、 a[1]、 a[2]、 a[3]、a[4]这样的形式访

问每个元素

下标既可是常量, 也可是整型表达式,允许快速

随机访问,如a[i]

可以像使用普通变量一样使用它们

4.下标越界是大忌!

编译程序不检查是否越界

下标越界,将访问数组以外的空间

那里的数据是未知的,不受我们掌控,可能带来严重后果

例:

03:寻找配对数

查看 提交 统计 提问

总时间限制: 1000ms 内存限制: 65536kB

描述

在给定的n个互不相等的正整数中,寻找可以形成a*b=c的等式(a,b,c互不相等)的数目。比如在12,32,6,1,2,8,4中,只有2*4=8, 2*6=12, 4*8=32三对。

 

注意:给出的正整数互不相同。正整数的最大值为2^32-1,正整数的最大个数为1000.

 

输入

第一行输入总共的正整数数目n(n<=1000)

接下来的一行输入n个正整数,正整数之间用一个空格隔开。

输出

输出其中满足a*b=c等式的数目。

样例输入

7

8 6 3 4 10 5 2

样例输出

3

#include<iostream>

 #include<cstdio>

 using namespace std;

 int main()

 {

     int n,i,j,k,l,m=0;

     int a[1001];

     cin>>n;

     for(i=1;i<=n;i++)

     cin>>a[i];

     for(j=1;j<=n;j++)

     for(k=j+1;k<=n;k++)

     for(l=k+1;l<=n;l++)

     if(a[j]*a[k]==a[l]||a[j]*a[l]==a[k]||a[l]*a[k]==a[j])

     m++;

     cout<<m;

     return 0;

 }

二、二维数组

数据类型 数组名[第一维长度][第二维长度];

其他基本同一维数组。

三、排序查找

1.选择排序

main()

{

int a[100000];

int i,j,max,l;

cin>>n;

for(i=0;i<n;i++) cin>> a[i];

for(j=0;j<n-1j++)

{ l=j;

for(i=1;i<n;++)

if(a[]<a[i)

 |=l;

if(!=j)i=a[l,a[]=a[j],a[j]=i;

}

return 0;

}

2.插入排序

void insSor(int *a,int num)

{

 

for(i=1;i<num;i++)

{

|= i-1;temp=a[i];

while(l>=O&&a[]>temp)

 

a[l+1]=a[];

1-;

a[l+1]=temp;

3.冒泡排序

#include<iostream>#include <iomanip>using namespace std;const int n=10;int t,a[n+1];int main()

 

//定义数组

for (int i=1; i<=n; ++i) cin>>a[i];

for (int j=1; j<=n-1; ++j) //冒 泡法排序for (int i=1;i<=n-j; ++i) //两两相比较

if (a[j]<a[i+1]) //比较与交换{t=a[i]; a[j=a[i+1]; a[i+1]=t;}for (int i=1; i<=n; ++i)

cout<<setw(5)<<a[i};cout<<end;return 0;

 

//输入十个数

//输出排序后的十个数

运行结果:

输入: 2586 1234652216 55

输出: 6555342216128 652

4.折半查找

low=0,high=n-1 ,mid=o;

while(low<=high)

  mid=(low+high)/2;

  if(a[mid]>temp)

  high=mid-1;

  else if(almid]<temp)

  low=mid+1;

  else

  couture<<a[mid]<<endl;

}

cout<<"Not Found!" <<endl;

}

四、数组的题目要求要有清晰的思路,

要搞清每个变量代表的含义,弄清每

一个嵌套循环是在哪一个条件下执行。

不能弄错下标!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值