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

经典排序—插入排序

时间:2015-12-18 22:38:04      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

算法描述:

假定n是数组的长度,

    首先假设第一个元素被放置在正确的位置上,这样仅需从1到n-1范围内对剩余元素进行排序。对于每次遍历,从0到i-1范围内的数组元素已经被排好序,每次遍历的任务是:通过扫描前面已排序的子列表,将位置i处的元素定位到从0到i的子列表之内的正确的位置上。将arr[i]复制为一个名为target的临时元素。向下扫描列表,比较这个目标值target与arr[i-1]、arr[i-2]的大小,依次类推。这个比较过程在小于或等于目标值的第一个元素(arr[j])处停止,或者在列表开始处停止(j=0)。在arr[i]小于前面任何已排序元素时,后一个条件(j=0)为真,因此,这个元素会占用新排序子列表的第一个位置。在扫描期间,大于目标值target的每个元素都会向右滑动一个位置(arr[j]=arr[j-1])。一旦确定了正确位置j,

目标值target(即原始的arr[i])就会被复制到这个位置。与选择排序不同的是,插入排序将数据向右滑动,并且不会执行交换。

代码实现(java):

public  class  InsertSort {

   public  void  sort(int  []  a){
       

       for(int  i=1;i<a.length;i++)

       {

           int   target = a[i];

           int    j=i-1;

          for( ; j>=0&&target<a[j];j--)

             {

                  a[j+1] = a[j];

             }

         a[j+1] = target;

      }

   }

}

利用插入排序的思想可以解决数组中的奇数与偶数顺序的调整(调整数组顺序使奇数位于偶数前面,调整后奇数与偶数相对位置不变)等问题。   

            

经典排序—插入排序

标签:

原文地址:http://www.cnblogs.com/lizhonghai0209/p/5058293.html

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