排序算法 -- 插入排序

插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。 --- 百度百科

插入排序主要完成的工作就是 向有序的队列中 插入一个新的元素, 类似于咱们打扑克时理牌的操作,向手中理好的牌中插入一张新的牌。
如图:

插入排序

code:

static void Main(string[] args)
        {
            int len = 20;
            Random rd = new Random();
            int[] arr = new int[len];
            for (int i = 0; i < len; i++)
            {
                arr[i] = rd.Next(0, 1000);
            }
            Console.WriteLine("排序前---------");
            outputArr(arr);
            insertSort(arr);
            Console.WriteLine("排序后---------");
            outputArr(arr);
        }
        private static void insertSort(int[] arr)
        {
            for (int i = 1; i < arr.Length; i++)
            {
                for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) //将i位置的数插入到(0-j)中
                {
                    swap(arr, j, j + 1); //交换
                }
            }
        }

test:


test

你可能感兴趣的:(排序算法 -- 插入排序)