冒泡排序
int[] num = { 6, 2, 78, 34, 54 };
int mid;
//总共冒泡 num.Length - 1 次
for (int i = 0; i < num.Length - 1; i++)
{
//把最大的冒泡出来
for (int j = 0; j < num.Length - 1 - i; j++)
{
if (num[j] > num[j + 1])
{
mid = num[j];
num[j] = num[j + 1];
num[j + 1] = mid;
}
}
}
for (int i = 0; i < num.Length; i++)
{
Console.WriteLine(num[i]);
}
插入排序
int[] num = { 6, 5, 3, 1, 8, 7, 2, 4 };
int value, key;
for (int i = 1; i < num.Length; i++) //从第2个数抽出,分别与前面的数比较。所以i的初始值为1
{
value = num[i]; //拿出来的值为value
key = i - 1; //key为指针,是必要的
//key >= 0 一定要放在 nums[key] > value前面,否则会报错,索引超出
//这里牵扯到了执行顺序的问题
while (key >= 0 && num[key] > value) //都与value比较
{
num[key + 1] = num[key]; //(向后覆盖)把值往后移一位
key--;
}
num[key + 1] = value; //最后把拿出来的value放回去,与while循环一起用
//如果while循环从没有执行过,这一步虽然执行了,但是没有起到任何作用
}
for (int i = 0; i < num.Length; i++)
{
Console.WriteLine(num[i]);
}