插入排序
将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)
视为有两个集合,第一个集合只有一个元素,第二个集合是无序的,将无序集合中的元素一个一个插入第一个集合中,使其逐渐变得有序,当第二个集合移动到最后一个元素时,第一个集合变成有序集合,产生排序效果。
package com.pangzi.stucture; import java.util.Arrays; public class InsertSort { public static void main(String[] args) { int[] arr = {101,34,119,1}; insertSort(arr); } //插入排序 public static void insertSort(int[] arr){ //使用for循环 for(int i = 1;i< arr.length;i++){ int insertVal = arr[i];//从数组的第二个元素开始,与第一个有序元素进行比较 int insertIndex = i-1;//即arr[1]前面这个数的索引下标 while(insertIndex >= 0 && insertVal < arr[insertIndex]){//判断索引不越界,且插入的元素小于插入元素左边的元素 arr[insertIndex + 1] = arr[insertIndex];//将第一个元素向右移动1位,将arr[0]赋值给arr[1] insertIndex--;//将arr[0]的索引减一,这时候insertIndex为-1 } arr[insertIndex + 1] = insertVal;//将待插入元素赋值给arr[-1+1],即arr[0] }