插入排序
有待排序数组A,任意指定A中某一位置作为元素的插入位置B。此时,假设B位置左端的所有元素都是有序的,记录下B位置的元素ValueB,将ValueB与其左端的有序元素进行比较,如果ValueB左端的元素大于或等于ValueB,则将其后移一位,最后在后移空出的位置将ValueB插入。重复以上步骤,直到数组中的最后一个元素,排序结束。
package blog.csdn.net.zhaikun.arithmeticdemo;
import java.util.Arrays;
/** * Created by zhaikun68 on 2018/2/24. * <p> * 插入排序Demo */ public class InsertSortDemo {
/** * 插入排序 * * @param sortArray 待排序数组 * @return 已排序数组 */ private static int[] insertSort(int[] sortArray) { if (sortArray == null || sortArray.length == 0) { System.out.print("待排序数组为空,不进行排序"); return null; } int temp;//记录插入数组中的元素 int inIndex;//内层循环索引 for (int outIndex = 1; outIndex < sortArray.length; outIndex++) { temp = sortArray[outIndex]; inIndex = outIndex; while (inIndex > 0 && sortArray[inIndex - 1] >= temp) { sortArray[inIndex] = sortArray[inIndex - 1]; --inIndex; } sortArray[inIndex] = temp; } return sortArray; }
public static void main(String[] args) { int[] initArray = {2, 3, 2, 2, 6, 9, 0, 7, 4, 5};//初始化一个待排序的数组 int[] sortAfterArray = insertSort(initArray); System.out.print("排序后的数组 = " + Arrays.toString(sortAfterArray)); } }
|