插入排序(英语:Insertion Sort)是一种简单直观的排序算法。通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。
插入排序算法的运作如下:
1.首先对数组的前两个数据进行从小到大的排序;
2.接着将第3个数据与排好序的两个数据进行比较,将第三个数据插入合适的位置;
3.然后,将第4个数据插入已排好序的前3个数据中。
4.不断重复上述过程,直到把最后一个数据插入合适的位置。
package cn.kimtian.sort;
import java.util.Arrays;
/**
* 这是一个插入排序算法
*
* @author kimtian
*/
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {1, 3, 6, 7, 8, 0, 7, 4, 2, 1};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 这是一个插入排序算法
*
* @param arr
*/
public static void insertSort(int[] arr) {
//遍历所有的数字
for (int i = 1; i < arr.length; i++) {
//如果当前数字比前一个数字小
if (arr[i - 1] > arr[i]) {
int mid = arr[i];
for (int j = i - 1; j >= 0 && arr[j] > mid; j--) {
int temp = arr[j];
//交换位置
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}