算法设计与分析基础12插入排序

Posted cutter_point

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法设计与分析基础12插入排序相关的知识,希望对你有一定的参考价值。

package cn.xf.algorithm.ch04;

import org.junit.Test;

/**
 * 
 * 
 * .
 * @author xiaof
 * @version Revision 1.0.0
 * @see:
 * @创建日期:2017年5月23日
 * @功能说明:插入排序
 *
 */
public class InsertSort {
    
    /**
     * 插入排序,核心思想是,遍历这个数据,然后把所有的所有的数据从前往后往这个空位拉开一个身位,
     * 直到找到比这个数小的位置后面,往这个空位插入当前遍历到的数据
     * @param Data
     * @return
     */
    public int[] insertionSort(int Data[]) {
        //遍历原始数据
        for(int i = 0; i < Data.length; ++i) {
            //保存当前遍历的数据
            int curData = Data[i];
            //接下来从这个位置开始往前遍历,直到最后
            int j = i - 1;
            while(j >= 0 && Data[j] > curData) {
                //寻找比这个当前遍历数据更小的数据,吧当前数据插入到这个数据之后
                Data[j + 1] = Data[j];  //后移一位数据
                j = j - 1;
            }
            //插入遍历到的数据之后
            Data[j + 1] = curData;
        }
        
        return Data;
    }
    
    @Test
    public void test1() {
        //测试插入排序
        int Data[] = {89, 45, 68, 90, 29, 34, 17};
        InsertSort is = new InsertSort();
        int result[] = is.insertionSort(Data);
        
        for(int i : result) {
            System.out.print(i + " ");
        }
    }
}

  

 

插入排序:

 

 

以上是关于算法设计与分析基础12插入排序的主要内容,如果未能解决你的问题,请参考以下文章

算法基础

算法分析与设计——各类排序算法

算法设计与分析——十大经典排序算法一(1--5)

基础排序算法总结(代码+图片分析)

算法设计与分析基础5冒泡排序与选择排序

计算机算法设计与分析——排序