排序算法之插入排序(Java)
思路:先假定第0位为原数组,然后后面的每一位都是插入的数。
就好比斗地主的牌,先起一张牌,后面的每一张牌都要和前面的牌进行比较,
然后按照顺序排列起来。
所以需要从第二个数字开始作为循环的起点,然后 i 就是 1~length 的长度
然后让 j=i-1,第0位就是 j ,第 i 位变成了 j+1 位置
然后从j位(也就是第0位)开始跟后面的进行比较,如果后面的数值更小就和它交换。
public class 插入排序 {
public static void insertionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
//从第2个数字开始循环
for (int i = 1; i < arr.length; i++) {
//后面的与前面的对比,后来的小于前面的就交换,一直到无法交换
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
本内容均为个人学习使用
浙公网安备 33010602011771号