private int[] Insert_Sorting(int[] numbers)
{
int Value, j;
for (int i = 0; i < numbers.Length-1; i++)
{
Value = numbers[i + 1];
for (j = i; j >= 0; j--)
{
if (numbers[j] >= Value)
{
numbers[j + 1] = numbers[j];
}
else
{
break;
}
}
numbers[j + 1] = Value;
}
return numbers;
}
插入排序思路讲解。
假设我需要把一个数组从小往大排序。
1.j以内的元素肯定是有序的,如果我需要把一个元素从小往大排序,j=0时个元素肯定是最小的
2.第j个元素和i+1个元素做对比,两种情况
第一种:第j个元素一种是>=第i+1个元素。说明没有找到合适的位置。将J位置的元素移到j+1。
第二种:第j个元素<i+1元素。说明找到了合适的位置,把i+1元素放入j+1即可。
以此类推。当i=Leng-1的时候就可以结束循环。
参数解释
Value=表示需要被插入的值。
注释
[5,6,8,?7]
假设我需要将7插入到数组中。如何使其还是从小到大的顺序呢?
将此时的7就表示Value。num[j]表示num[0,j]。
让7和8判断,如果num[j]>7就将它移到7的位置,然后找到6的位置。把7插入到6的前面。