数组:能存放一种数据类型,里面存放的数据被称为元素。数组的定义:
例如: int num[3];
int num[]={1,2,3};
如果没有说明数组内部的具体元素是什么,则数组的[]里面的值得说明。绝对不能使用变量或者变量表达式来表示元素个数,大多数情况下不要省略元素个数。
num为数组元素的首地址
&num为数组级别的地址
数组名做参数传递进来的是地址(数组首元素地址)
数组名作为参数时,丢失了数组本身的大小,退化成了一个指针。
数组名做参数时,要加上自己的大小(个数)
数组的遍历:
for(i=0;i<lenth;i++)
{
printf("arry[%d]=%d\n",i,arry[i]);
}
两种经典排序方法:
①选择排序:
原理:每一次从无序的数据元素中选出最小或者最大的一个元素,存放在无序组的起始位置,无序组元素减小,有序组元素增加,直到全部元素排序完成。
代码如下:
int sortX(int arry[],int lenth)
{
int i,j,t;
for(i=0;i<lenth-1;i++)
{
for(j=i;j<lenth;j++)
{
if(arry[i]>arry[j])
{
t=arry[i];
arry[i]=arry[j];
arry[j]=t;
}
}
}
}
②冒泡排序:
原理:将前后每两个数进行比较,较大的数往后排,一轮下来最大的数就排到最后去了。然后再进行第二轮比较,第二大的数也排到倒数第二了,以此类推
代码如下:
int sortM(int arry[],int lenth)
{
int i,j,t;
for(i=0;i<lenth;i++)
{
for(j=0;j<lenth-i-1;j++)
{
if(arry[j]>arry[j+1])
{
t=arry[j];
arry[j]=arry[j+1];
arry[j+1]=t;
}
}
}
}