插入排序
- 数组分为两部分,第一部为第一个元素,第二部分为数组其它元素。然后就像摸牌一样,第二部的元素一直与第一部分的元素进行比较,如果插入的元素比第一部分的元素小,第一部的元素则往后移。
package com.dhr.study.algorithm.sort_algorithm;
public class InsertSort {
public int[] insertSort(int[] arr) {
// 从第二个元素开始遍历数组
for (int i = 1; i < arr.length; i++) {
// 设置待插入的值
int insertValue = arr[i];
// 设置插入位置的前一个元素的下标
int index = i - 1;
// 将待插入值与插入位置的前一个元素进行比较,直到找到插入位置
while (index >= 0 && insertValue < arr[index]) {
// 将插入位置的前一个元素后移一位
arr[index + 1] = arr[index];
// 更新插入位置
index--;
}
// 将待插入值插入到找到的位置
arr[index + 1] = insertValue;
}
// 返回排序后的数组
return arr;
}
public static void main(String[] args) {
int[] arr = {4, 1, 2, 5, 8};
InsertSort insertSort = new InsertSort();
System.out.println(insertSort.insertSort(arr));
}
}
运行结果