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