C语言学习笔记(4)数组

int a[5];  //[]里的必须是常量或常量表达式

下标是从0开始的

数组初始化

二维数组行优先存储

 

不允许定义动态数组类型

 

srand  rand函数

时间是srand的种子

相当于用一个随机数为另一个随机数生成种子,然后用系统时间作为第一个随机数的种子,这样就可以保证每一次运行结果都不一样,随机数其实是一种公式,或者是一个预制的列表,所以需要一个数据来作为公式的输入数据,或者是列表的起始位置。(这段是学弟的讲解,感谢学弟!)

 

向函数传递数组:(按地址传递)

 

常用算法:

查找

int find(int a[ ],int n,int x){
    int i = 0;
    while(i < n){      //循环条件为:如果未找到且未搜索完元素
        if(x == a[i])  //如果查找成功,i的值正好是元素下标
            break;
        i++;
    }
    return i;
}

 

插入

定位、移位(往后赋值)、插入

void insert(int a[],int n,int x){
    int i,j;
    for(i = 0;i<n && a[i]<x;i ++);  //定位:循环停止时的i就是待插入位置
    for(j = n-1;j >= i;j --)        //移位:用递减循环移位,使i下标元素可被覆盖
        a[j+1] = a[j];
    a[i] = x;                       //插入:数组的i下标元素值赋值为插入的x
}

 

删除

定位、移位(前移)、个数减1

int delArray(int a[ ],int n,in x){
    int i,j;
    int flag = 1;                     //是否找到待删除元素的标志位,1找到,0未找到
    for(i = 0;i<n && a[i]!=x;i ++);   //查找x是否存在,此处循环体为空语句
    if(i == n)                        //循环停止时如果i==n,说明元素不存在
        flag=0;
    else{
        for(j = i;j < n-1;j ++)
            a[j]=a[j+1];
    }                                 //前移覆盖i下标的元素
    return flag;
}

 

排序

冒泡排序法、选择排序法

冒泡法(从小到大)

void BubbleSort(int a[ ],int n){
    int i,j,temp;
    for(i = 0;i < n-1;i ++)
        for(j = n-1;j > i;j --)   //递减循环,从后往前比较
            if(a[j] < a[j-1]){    //两两比较,若后一个元素小,则交换
                temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;
             }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务