在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序。而在插入排序中,从第二个元素开始,依次遍历数组中的元素,把当前遍历元素与之前的元素进行比较,并插入到之前的某个位置,是一种由后往前的排序。
自定义一个类,里面维护着一个int[]类型数组,通过构造函数定义数组长度并初始化,并提供了打印和插入排序的相关方法。
以上,大致过程是:从数组中第二个元素开始,先把当前遍历元素赋值给一个临时变量,比如说是insert,insert这个变量肯定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();}}
新闻热点
疑难解答