插入排序法

来源:互联网 发布:易语言编程怎么样 编辑:程序博客网 时间:2024/06/08 16:02

起因


米老师上周的讲课,让我们认识到了,算法对于某一种编程语言来说可能对我们更重要,因为计算机语言和开发平台日新月异,万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、关系型数据库原理等等。


算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

原理


每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。如下:
【13】, 6, 3, 31, 9, 27, 5, 11
【6, 13】, 3, 31, 9, 27, 5, 11
【3, 6, 13】, 31, 9, 27, 5, 11
【3, 6, 13,31】, 9, 27, 5, 11
【3, 6, 9, 13,31】, 27, 5, 11
【3, 6, 9, 13,27, 31】, 5, 11
【3, 5, 6, 9, 13,27, 31】, 11
【3, 5, 6, 9, 11,13,27, 31】

实现

/********************************************************************************** auth: 薛宇** date: 2016/8/1 11:35:30** desc:  插入排序法** Ver.:  V1.0.0*********************************************************************************/using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace InsertSort{    class Program    {        static void Main(string[] args)        {            int[] arr = { 13,6,3,31,9,27,5,11};            int i, j, tmp;            for (i = 1; i < arr.Length; i++)            {                tmp = arr[i];// 当前值,这里赋给tmp起临时保存的作用                j = i - 1;// 将当前值与有序区的值依次比较                while (j >= 0 && tmp < arr[j])//改变判断条件,实现从小到大地排列                {                    arr[j + 1] = arr[j];// 将元素后移                    j--;                }                // j+1(因为上边的while循环多做了一次判断)即为当前值插入的位置                arr[j + 1] = tmp;            }            for (int k = 0; k < arr.Length; k++)            {                Console.Write("{0}  ", arr[k]);            }            Console.WriteLine();            Console.ReadKey();        }    }}

这里写图片描述


基础知识为“内功”,把新的语言、技术、标准为“外功”。那么只有内外兼修,才能真正的出神入化成为高手吧。算法研究的路还很长,小编还要跟大家一起努力啊。

0 0