一维数组:
类型说明符 数组名[常量表达式] int a[10]
常量表达式不能为空类型(void)
数组的性质:
单一性:数组元素在内存中存放字节都相同
有序性:数组下标小的在下标大的前面
连续性:数组内元素没有字节隔开
一维数组元素的使用:
[] :下标运算符
数组的数组名代表数组首元素的地址:数组不能被整体赋值;
一维数组的初始化:
int a[10] = {1,2,3,4,5,6,7,8,9,0};
1、花括号内个数超过数组个数,会造成越界访问
2、数组不初始化,里面的值,都是随机数
3、数组初始化后,缺元素 补0
4、可变的对象不能初始化
排序(无特殊说明一般为升序)
逆序:
include<stdio.h>
int main(void)
{
int a[] = {1,2,3,4,5,6,7,8,9,0};
int len = sizeof(a) / sizeof(a[0]);
int i,j,sum;
for(i = 0;i < len / 2;++i)
{
sum = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = sum;
}
for(i = 0;i < len;++i)
{
printf("%d\n",a[i]);
}
return 0;
}
选择排序法:
在数组合适的位置上放合适的数;(算法复杂度)
int main(void)
{
int a[] = {1,2,4,3,6,7,8,5,9,0};
int len = sizeof(a) / sizeof(a[0]);
int i,j;
for(i = 0;i < len -1;++i)
{
for(j = i + 1;j < len;++j)
{
if(a[i] > a[j])
{
int t;
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i = 0;i < len; ++i)
{
printf("%d\n",a[i]);
}
return 0;
}
冒泡排序法:相邻两个元素两两比较,小的放前,大的放后
int main(void)
{
int a[] = {1,4,5,6,2,8,3,7,9,0};
int len = sizeof(a) / sizeof(a[0]);
int i,j;
for(j = len - 1;j > 0;--j)
{
for(i = 0;i < j;++i)
{
if(a[i] > a[i + 1])
{
int t;
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
for(i = 0;i < len;++i)
{
printf("%d\n",a[i]);
}
return 0;
}
插入排序法:
int main(void)
{
int a[] = {1,4,5,6,2,8,3,7,9,0};
int len = sizeof(a) / sizeof(a[0]);
int i;
for(i = 1; i< len;++i)
{
int j;
int t = a[i];
j = i;
while(j >0 && a[j - 1]>t)
{
a[j] = a[j - 1];
--j;
}
a[j] = t;
}
for(i = 0;i< len;++i)
{
printf("%d\n",a[i]);
}
return 0;
}