数组下标
什么是数组下标?
每一个数组如a[i],都有下标(i)就相当于我们家都有门牌号一样,我们可以快速找到
以一个简单的一维数组为例:
int a[10]。这是一个整型的数组a,有10个元素:a[0]-a[9],0-9就是它们的下标,可以用a[0-9]来快速查找。
练习题
一、插数问题
有一串已经从小到大排好序的数 2 3 5 8 9 10 18 26 32 现需要往这串数中插入6使其得到的新序列仍符合从小到大排列。
注意!!!是新序列不要直接输出
问题分析
我首先想到的是把它遍历一遍找到第一个比6大的数,但瞬间有点懵!这怎么替换呢?难道再加一个循环?显然时间复杂度瞬间上升,这就要用到数组下标了。
先把6排到数组末尾,然后找都正确位置后替换下标
题解
#include<iostream>
using namespace std;
int a[20],b[20],n,q;
int main( )
{
for(int i=1;i<=9;i++)
{
cin>>a[i];//输入
b[i]=i+1;//设置下标的初始值
}
a[10]=6;//要替换的数
int i;
for(i=1;i<=9;i++)
{
if(a[i]>a[10])//第一个比他大的数
{
b[10]=i+1;//交换他们的下标
b[i]=11;
break;
}
}
for(int j=1;j<=9;j++)//输出
{
if(j==i)
{
cout<<a[b[j]-1]<<" ";
cout<<a[b[10]-1]<<" ";
}
else
cout<<a[b[j]-1]<<" ";
}
return 0;
}
//可以代替指针,十分方便