/**
* 插入排序
* 模型:扑克牌抓牌期间,在首次抓牌后,假设手里有一张3(下标为0),之后抓到5,则放在3后面,即5的下标为1,再抓到2,判断是不是比5大,比5小,和5交换位置(此时,5的下标变为2,2的下标变为1),
* 继续判断是否比3大,比3小,和3交换位置(此时,3的下标变为1,2的下标变为0)
* 原理,从下标为1的地方开始遍历,每次获取当前下标之前的所有数进行遍历,与当前位置的数进行比较,当前位置的小,则交换位置。
*/
public class InsertSort {
public static void main(String[] args) {
int[] array = {5,6,8,2,1};
insertSort(array);
System.out.println(Arrays.toString(array));
}
public static void insertSort(int[] array){
for (int i = 1; i < array.length; i++) {//这里是为了获取每次需要进行比对的数
for (int j = i; j >0 && array[j] < array[j-1]; j--) {//这是为了将当前的数,与前面已经排好的数进行比对
//这里,从i开始向前循环,就是说以数组中第i个元素与之前的元素做比对,比前一个小,就往前移
swap(array,j,j-1);
}
}
}
//交换位置
public static void swap (int[] array, int x , int y){
int temp = array[x];
array[x] = array[y];
array[y] = temp;
}
}
插入排序基本实现
最新推荐文章于 2024-03-19 18:50:33 发布