首页 > 其他 > 详细

C#实现插入排序(源代码)

时间:2014-01-17 09:22:29      阅读:457      评论:0      收藏:0      [点我收藏+]

算法思路:

将n个元素分成【已排序】和【未排序】两部分。每次将【未排序】中的一个元素取出,插入到已排序中的相应位置。直至所有元素排序完毕。

  【已排序】        【未排序】

  { { a[0] }               ,   { a[1],a[2],a[3]....a[n-1] } }

  { { a[0] , a[1] }   ,   { a[2],a[3] ....a[n-1] }   }

  { { a[0] ,a[1],a[2] } ,   { a[3]......a[n-1] }     }

性质:

插入排序是一种原地排序(只有常数个元素存到数组以外的空间),最坏的时间复杂度是n2

代码如下:

bubuko.com,布布扣
static void Main(string[] args)
        {
            var a= new int[]{5,3,1,9,4,32,2};
 
            
            for (int i = 1; i < a.Length; i++)    //外层循环:遍历数组,从第二个元素开始
            {
                int num= a[i];      //将待插入元素存入num
                int index = i;      //记录待插入元素下标


                for (int j = i-1; j >= 0; j--)   //内层循环:遍历待【插入元素之前】所有已经排好顺序的数组
                {
                    if( num < a[j])  // *如果待插入元素小于前一个元素,向后赋值一位*
                    {
                                a[index] = a[index -1];
                                index--;

                    }
                    else if (num >= a[j]) { break; } //找到插入位置,跳出内层循环

                }
                a[index] = num;    //插入到相应位置

            }

            foreach (var item in a)
            { Console.Write("\t" + item); }

            Console.Read();
        }
bubuko.com,布布扣

直观示意:

当原数组:{5,3,1,9,4,32,2}           前四位已经排好变成: {1,3,5,9,4,32,2} 的时候,该排4了, 数组的实际变化如下。

bubuko.com,布布扣

C#实现插入排序(源代码)

原文:http://www.cnblogs.com/hydor/p/3523448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!