C语言程序设计——数组

一维数组:
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;
   }
 }
}

猜你喜欢

转载自blog.csdn.net/weixin_45743004/article/details/104663027