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;
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。