插入排序 (Insertion sort) 的原理是:将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,排序结束。
实现步骤:
- 从第一个元素开始,该元素可以认为已经被排序。
- 取出下一个元素,在已经排序的元素序列中从后向前扫描。
- 如果该元素(已排序)大于新元素,将该元素移到下一位置。
- 重复步骤3,直到找到已排序的元素小于或者等于新元紫的位置。
- 将新元素插入到该位置后。
- 重复步骤2~5。
public void insertionSort1(int[] arr){
int len = arr.length;
if(len <= 1) {
return;
}
for(int i = 1; i < len; i++) {
int temp = arr[i];
for(int j = i - 1; j >= 0; j--) {
if(arr[j] > temp) {
arr[j + 1] = arr[j];
arr[j] = temp;
}else {
arr[j + 1] = temp;
break;
}
}
}
}