码迷,mamicode.com
首页 > 编程语言 > 详细

排序之----插入排序(C#实现)

时间:2014-10-13 23:44:37      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   数据   div   on   

算法步骤:(从小到大)

1:将第一个元素与第二个元素比较大小,如果第一个元素小于等于第二个元素,不做处理,继续比较第二个元素和第三个元素。

如果第三个元素小于第二个元素,保存要移动的元素(第三个元素),将第二个元素后移一位,在比较第一个元素与第三个元素,看第一个元素是否需要移动,一直循环,找到第一个不需要移动的元素或者第0个元素,将前面保存的元素插入到该位置。

class Program
    {
        static void Main(string[] args)
        {
            var numbers = new int[]{5,5,6,1,4,7,2,9};
            var result=InsortSort(numbers);
        }

        public static int[] InsortSort(int [] numbers)
        {
            int temp = 0;
            for (int i = 0; i < numbers.Length - 1; i++)
            {
               if(numbers[i]<=numbers[i+1])
                   continue;
                temp = numbers[i + 1];//temp保存要向前移动的数字,防止数字被覆盖掉
                for (int j = i; j >= 0; j--)//numbers从第i个元素到第0个元素为可能要向后移动的元素
                {
                    if (temp <= numbers[j])//numbers[j]需要向后移动一个位置
                        numbers[j + 1] = numbers[j];//numbers[j+1]已经移动过,或者保存在temp中了,所以不会丢失数据
                    else
                    {
                        numbers[j +1] = temp;//j+1是要插入的位置
                        break;
                    }
                    if (j == 0)//值最小的情况
                        numbers[0] = temp;
                }
            }
            return numbers;
        }
    }

 

排序之----插入排序(C#实现)

标签:style   blog   color   ar   for   sp   数据   div   on   

原文地址:http://www.cnblogs.com/foreveryt/p/4023139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!