插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
insertionSort.gif
public class InsertionSort {
//核心代码---开始
public static void sort(Comparable[] arr) {
int n = arr.length;
for (int i = 0; i < n; i++) {
// 寻找元素 arr[i] 合适的插入位置
for (int j = i; j > 0; j--)
if (arr[j].compareTo(arr[j - 1]) < 0)
swap(arr, j, j - 1);
else
break;
}
}
//核心代码---结束
private static void swap(Object[] arr, int i, int j) {
Object t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
public static void main(String[] args) {
Integer[] arr = randomArray();
InsertionSort.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
System.out.print(' ');
}
}
/**
* 获取随机100长度的数组
*
* @return 随机数组
*/
private static Integer[] randomArray() {
Integer[] array = new Integer[100];
for (int i = 0; i < array.length; i++) {
array[i] = (int) Math.floor(Math.random() * 100);
}
return array;
}
}
网友评论