1.数组定义
动态数组(显示数组):数据类型[] 变量名=new 数据类型[大小];
int[] a=new int[30000];
2、访问
数组的访问:a[i] i:下标(从0开始)
赋值:a[0]=1;
例:
void Get()
{
int[] a = new int[5];//定义一个有5个元素的整形数值
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
Console.WriteLine(a[0] + "\t" + a[3]);
}
void Get2()
{
int[] a = new int[5];
//for (int i = 0; i <5; i++)
//for (int i = 0; i <= 4; i++)
for (int i = 0; i <a.Length; i++)//a.Length:数组的长度
{
a[i] = i + 1;
}
Console.WriteLine(a[0] + "\t" + a[3]);
}
static void Main(string[] args)
{
Test15 t = new Test15();
t.Get2();
}
静态数组(隐式数组)
int[] x={1,2,3,4,5};
void Get3()
{
//把a数组的值倒序放入b数组
int[] a = { 1, 2, 3, 4, 5 };
int[] b = new int[5];
for (int i = a.Length-1; i >= 0; i--)//循环赋值
{
b[4-i] = a[i];//i:4 3 2 1 0
}
for (int i = 0; i < b.Length; i++)//循环输出
{
Console.WriteLine(b[i]);
}
}
3、排序
Array.Sort()
//把数据正序排列
int[] a = { 95, 74, 63, 87, 55 };
Array.Sort(a);
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
//把数据倒序排列
for (int i = a.Length-1; i >=0 ; i--)
{
Console.WriteLine(a[i]);
}
void Get5()
{
//冒泡排序
int[] a = { 95, 74, 63, 87, 55 };
int t;
for (int i = 0; i < a.Length; i++)
{
for (int j = i; j < a.Length; j++)
{
if (a[i] > a[j])//由小到大
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
}
4、求最大值
void Get6()
{
//求最高分
int[] a = { 45, 74, 63, 87, 55 };
//1、假设数组中的一个数为最高分
int max = a[2];
//2、循环数组,找出比max还大的分,把这个分赋值给max
for (int i = 0; i < a.Length; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
Console.WriteLine(max);
}
插入排序
有一组学员的成绩{99,85,82,63, 60},要增加一个学员的成绩,将它插入成绩序列,并保持降序
65
分析:
- 找到第一次比这个数据小的数,此数就是要插入数据的位置i(判断这个数据),找到后退出循环
- 从i的位置向后,把后面的数据依次向后移动
- 把i这个位置赋给要插入的数据
void Insert()//插入排序
{
int[] a = { 99, 85, 82, 63, 60,0 };
int b=65,index=0;
for (int i = 0; i < a.Length; i++)
{
if (b >= a[i])
{
index = i;
break;
}
}
//99,85,82,63, 60 []
//99,85,82,[i] ,63, 60
//99,85,82,[index] ,63(i), 60
for (int i = a.Length - 1; i >= index + 1; i--)
{
a[i] = a[i - 1];
}
a[index] = b;
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
}