首页 > 学院 > 开发设计 > 正文

查找与排序04,插入排序

2019-11-17 03:00:29
字体:
来源:转载
供稿:网友

查找与排序04,插入排序

在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序。而在插入排序中,从第二个元素开始,依次遍历数组中的元素,把当前遍历元素与之前的元素进行比较,并插入到之前的某个位置,是一种由后往前的排序。

自定义一个类,里面维护着一个int[]类型数组,通过构造函数定义数组长度并初始化,并提供了打印和插入排序的相关方法。

    public class MyArray
    {
        PRivate static int[] arr;
        private static Random r = new Random();
        public MyArray(int size)
        {
            arr = new int[size];
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = r.Next(10, 100);
            }
        }
        //插入排序
        public void Sort()
        {
            int insert;
            for (int i = 1; i < arr.Length; i++) //从第二个元素开始遍历
            {
                insert = arr[i];//把当前遍历元素视为插入元素,放到临时变量insert中
                int moveItem = i;//movieItem可以理解为一个动态索引,初始位置在当前遍历元素的索引
                while (moveItem > 0 && arr[moveItem -1] > insert) //如果前面一个元素比插入元素大
                {
                    arr[moveItem] = arr[moveItem - 1];//那就把前面这个元素赋值给后面位置,相当于往后移一位
                    moveItem--;//再把动态索引位置向前移动一位
                }
                arr[moveItem] = insert;
                Print();
            }
        }
        //打印数组元素
        public void Print()
        {
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }
以上,大致过程是:从数组中第二个元素开始,先把当前遍历元素赋值给一个临时变量,比如说是insert,insert这个变量肯定
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表