一维数组:
int a [10];
基类型 数组长度
定义一个有10个int型元素的一维数组
下标从0开始
未初始化数组元素:自动初始化为0值,否则,是随机数
数组的数据类型:每一元素占内存空间的字节数
一维数组如何赋值:
例子
int a[4]= {1,2,3,4};
int b[4];
方法一:
b[0]=a[0];
b[1]=a[1];
b[2]=a[2];
b[3]=a[3];
方法二:
int i;
for(i=0;i<4;i++){
b[i]=a[i];
}
方法三:
memcpy(b,a,(sizeof(a)))
#include <string.h>
数组的逻辑存储结构:
一维数组:int a[5]
用一个下标确定元素位置
二维数组:int b[2][3]
用两个下标确定元素位置
二维数组的定义和初始化:
int a [2][3]
宏定义
#define N 10
int a [N];
//查找算法
#include <stdio.h>
#define N 40 //定义一个有40个int型元素的一维数组
int LinSearch (long num[],long x,int n);
int ReadScore (long num[],int score[]);
int main(int argc, char const *argv[])
{
int score [N],n,pos;
long num[N],x;
n =ReadScore(num,score);
printf("Input the seaching ID:");
scanf("%1d",&x);
pos =LinSearch(num,x,n);
if (pos !=-1)
{
printf("score =%d\n",score[pos] );
}else{
printf("NO found \n");
return 0;
}
int LinSearch (long num[],long x,int n){
int i;
for(i=0;i<n;i++){
//从前往后开始查找
if(num[i]==x){
return i; //找到时返回下标
}
}
return -1; //找不到返回-1
}
int ReadScore (long num[],int score[]){
int i =-1;
do{
i++;
printf("input num ,score");
scanf("%1d%d",&num[i] ,&score[i]);
}while (score[i]>=0);
return i;
}
线性查找
二分查找(分好序):表中间开始查找
比较次数少,查找速度快,平均性能好
#define N 40
#include <stdio.h>
int BinSearch(long num[],long x,int n );
int ReadScore (long num[],int score[]);
int main(int argc, char const *argv[])
{
int score [N],n,pos;
long num[N],x;
n =ReadScore(num,score);
printf("Input the seaching ID:");
scanf("%1d",&x);
pos =LinSearch(num,x,n);
if (pos !=-1)
{
printf("score =%d\n",score[pos] );
}else{
printf("NO found \n");
}
return 0;
}
int BinSearch(long num[],long x,int n ){
int low =0,high =n-1,mid;
while(low <=high){
mid =(high +low)/2;
if (x>num[mid])
{
low =mid +1;
}
else if(x< num[mid]){
high =mid -1;
}
else{
return mid;
}
}
return -1;
}
冒泡法排序:
void BubbeSort(int score[],int n){
int i ,j, temp;
for( i=0 ;i<n-1;i++){
for (int j = 1; j <n-i ; j++)
{
if(score[j]<score[j-1]){
temp =score[j];
score[j] =score[j-1];
score[j-1]=temp;
}
}
}
}
交换法排序:
void ChangSort (int socre[],int n){
int i,j,temp;
for(j=i+1;j>n;j++){
if(score[j]<score[i]){
temp =score[j];
socre[j] =score[i];
socre[i] =temp;
}
}
}
void selectionSort (int score[],int n){
int i,j,k,temp;
for(i=0;i<n-1,i++){
k=i;
for(j=k+i;j<n;k++)
if (score[j]<score[k])
{
k=j;
}
if(k!=i){
temp =score[k];
score[k] =socre[i];
score[i] =temp;
}
}
}