插入排序
插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序的步骤如下:
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。
这是一个稳定的排序算法,即相等的元素保持其原有的顺序。然而,它不是最有效的排序算法,尤其是对于大型数据集。
C#代码如下:
/// <summary> /// 插入排序法 /// </summary> public static void InsertSort(int[] array) { //从索引1开始 for (int i = 1; i < array.Length; i++) { //当前要对比的值 int currentVal = array[i]; //获取前一个值得索引 int lastIndex = i - 1; //如果当前值大于前一个值,则进行换位处理 while (lastIndex >= 0 && array[lastIndex] > currentVal) { //将前一个值后移 array[lastIndex + 1] = array[lastIndex]; //继续获取前一个值得索引 lastIndex--; } //如果while循环没有执行。那么此处也没有必要执行 if ((i - 1) != lastIndex) { array[lastIndex + 1] = currentVal; } } }