排序算法--插入排序(Insertion Sort)_C#程序实现
2018-04-15 22:17
507 查看
排序算法--插入排序(Insertion Sort)_C#程序实现
排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题。例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难。同样,存储在计算机中的数据的次序,对于处理这些数据的算法的速度和简便性而言,也具有非常深远的意义。
1.基本概念
排序是把一个记录(在排序中把数据元素称为记录)集合或序列重新排列成按记录的某个数据项值递增(或递减)的序列。
2插入排序(Insertion Sort)
插入排序(direct Insert Sort)的基本思想是:顺序地将待排序的记录按其关键码的大小插入到已排序的记录子序列的适当位置。子序列的记录个数从1 开始逐渐增大,当子序列的记录个数与顺序表中的记录个数相同时排序完毕。
2.1算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。
2.2动态图演示
2.3C#代码实现插入排序
插入排序
/// <summary> /// 插入排序 /// </summary> /// <param name="array"></param> /// <returns></returns> private static int[] InsertSort(int[] array) { for (int i = 1; i < array.Length; i++) { int insertVal = array[i]; int insertIndex = i - 1; while (insertIndex >= 0 && insertVal < array[insertIndex]) { array[insertIndex + 1] = array[insertIndex]; insertIndex--; } array[insertIndex + 1] = insertVal; printArray(array); Console.WriteLine("第" + (i) + "趟"); } return array; }
打印数组
/// <summary> /// 打印数组 /// </summary> /// <param name="array"></param> private static void printArray(int[] array) { if (array == null || array.Length <= 0) { return; } for (int i = 0; i < array.Length; i++) { Console.Write("["+array[i]+"]"+","); } }
测试代码:
//插入排序 int[] arrayTest3 = new int[] { 9, 8, 5, 6, 7, 4, 3, 2, 1 }; Console.WriteLine("\n------------原数组--------------"); printArray(arrayTest3); Console.WriteLine("\n------------插入排序--------------"); int[] resultArray3 = InsertSort(arrayTest3); Console.WriteLine("排序结果:"); printArray(resultArray3);
运行结果:
相关文章推荐
- 排序算法--希尔排序(Shell Sort)_C#程序实现
- 排序算法(一)—插入排序(Insertion sort)
- 排序算法集合(2)-C#实现的插入排序
- 插入排序 直接插入排序的PHP实现 Straight Insertion Sort
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 经典算法(8)- 插入排序(Insertion Sort) 及三个基本排序算法的比较
- 算法从排序开始——插入排序(Insertion Sort)C语言及Java实现
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 排序算法之插入排序<Insertion_Sort>及其C语言代码实现
- 排序算法总结之插入排序 Insertion Sort
- 排序算法——插入排序(Insertion Sort)
- 排序算法---插入排序(Insertion Sort)
- 插入排序(INSERTION-SORT) PYTHON实现
- 排序算法——插入排序(Insertion Sort)
- 排序算法-插入排序 Insertion Sort Θ(n-n)
- 经典排序算法 – 插入排序Insertion sort
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- 经典排序算法 – 插入排序Insertion sort
- 【LeetCode-面试算法经典-Java实现】【147-Insertion Sort List(链表插入排序)】
- 基础排序算法 – 插入排序Insertion sort