c# 插入排序

插入排序(Insertion Sort):将未排序的元素逐个插入到已排序的序列中的正确位置。

原始数据:{4,3,2,90,10}
第一个循环j=0
首先取出索引为1的元素 3 ,索引为0的元素4,4>3 把4赋值给索引为1的元素 结果为 4 4 2 90 10 然后 j–等于-1
把3赋值给arr[-1+1] 结果为 3 4 2 90 10;
第二个循环 j=1
首先取出索引为1的元素4,索引为2的元素2,4>2把4赋值给索引为2的元素 3结果为 3 4 4 90 10 然后 j-- 等于0
把2赋值给索引为1的元素 结果为 3 2 4 90 10 3>2 把 3赋值给索引1的元素 2结果为 3 3 4 90 10 然后l–等于-1 退出循环
然后arr[-1+1]=2,最终结果为2 3 4 90 10
… 以此类推

        public static void Sort(int[] arr)
        {
            //{4, 3, 2, 90, 10 }
            int n = arr.Length;//5
            for (int i = 1; i < n; i++)
            {
                int key = arr[i];
                int j = i - 1;
               
                // 将 arr[0...i-1] 中的元素移动到比 key 大的位置
                while (j >= 0 && arr[j] > key)
                {
                   
                    arr[j + 1] = arr[j];
                    j--;
                }

                arr[j + 1] = key;
            }
        }

你可能感兴趣的:(c#,排序算法,算法)