(2)数组的存储:
a.例:将一个十进制数转换为二进制
#include<stdio.h>
int main(void)
{
int a[20],i=0,m;
scanf("%d",&m);
if(m==0)
printf("0");
while(m)
{
a[i++]=m%2;
m/=2;
}
while(i)
printf("%d ",a[i--]);
}
(3)一维数组的排序
a.选择排序(排列n个元素)
框架
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
b.插入排序(排列n个元素)
框架
for(i=1;i<n;i++)
{
t=a[i];
j=i-1;
while(j>=0 && t<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
(4)一维数组的查找
a.顺序查找:若有n个元素,依次由左向右进行查找,若找到则终止
int a[10],i,t;
/*随机数赋值*/
scanf("%d",&t);
for(i=0;i<10;i++)
{
if(a[i]==t)
{
printf("%d",i);
break;
}
if(i==10)
printf("未找到")
}
b.二分法查找(折半查找,只能查找有序表)
int a[10],i,j,t,mid;
/*随机数赋值*/
/*排序*/
scanf("%d",&t);
i=0;j=9;
while(i<=j)
{
mid=(i+j)/z;
if(a[mid]==t)
{
printf("%d",a[mid]);
break;
}
else
{
if(t<a[mid])
j=mid+1;
else
i=mid-1;
}
if(i>j)
printf("未找到")
}
(5)一维数组元素的删除
a.本质:覆盖
b.程序:
for(i=0;i<10;i++)
{
if(a[i]!=t)
a[j++]=a[i];
}
(6)一维数组的移动
a.(a)数组逆置
/*方法一*/
i=0,j=10-1;
while(i<j)
{
t=a[i];
a[i]=a[j];
a[i]=t;
i++;
j--;
}
/*方法二*/
for(i=0;i<10/2;i++)
{
t=a[i];
a[i]=a[10-i-1];
a[10-i-1]=t;
}
b.数组的平移
(a)移动数组 将下标0->p(包含p,p小于数组长度-1)的元素平移到数组尾部
for(i=0;i<10;i++)
{
t=a[0];
for(j=1;j<10;j++)
{
a[j-1]=a[j];
a[9]=t;
}
}
(b)移动到首部
for(i=0;i<10;i++)
{
t=a[9];
for(j=0;j<10;j++)
{
a[j+1]=a[i];
}
a[0]=t;
}