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 + " ");
}
}
}
插入排序: