插入排序

static void Main(string[] args)
        {
            RArray arr = new RArray(10);
            Random r = new Random(100);
            for (int i = 0; i < 10; i++)
            {
                arr.Insert(r.Next(0, 100));
            }
            arr.DisPlayElements();


            Console.WriteLine("Bubble Sort.....");
            RArray list = BubbleSort(arr);
            list.DisPlayElements(); 
            Console.WriteLine("Selection Sort.....");
            list = SelectionSort(arr);
            list.DisPlayElements();
            Console.WriteLine("Insert Sort.....");
            list = InsertSort(arr);
            list.DisPlayElements();
            Console.ReadKey();
        }
       static RArray InsertSort(RArray arr)
        {

            int inner, temp;
            for (int outer = 1; outer <= arr.upper; outer++)
            {
                temp = arr[outer];
                inner = outer;
                while (inner > 0 && arr[inner - 1] >= temp)
                {
                    arr[inner] = arr[inner - 1];
                    inner -= 1;
                }
                arr[inner] = temp;
            }
            return arr;
        }

插入排序算法有两层循环。 外层循环会逐个遍历数组元素, 而内层循环则会把外层循环所选
择的元素与该元素在数组内的下一个元素进行比较。 如果外层循环选择的元素小于内层循环
选择的元素, 那么数组元素都向右移以便为内层循环元素留出位置.

原文地址:https://www.cnblogs.com/Francis-YZR/p/4971541.html