public class InsertionSort {
/** * @param args插入排序 * 1:类似于玩斗地主对手中的牌进行排序,数组假设为还未摸到的牌,刚开始左手为空 * 2:每摸一次牌交换摸到的牌与手中的牌进行比较,找到一个点插入 3 :进行下次摸牌比较,之后重复2 */public static void main(String[] args) { int sort[] = { 12, 34, 6, 7, 8, 89 }; int key = 0;// 刚开始未摸牌 int i = 0;// 左手中需要与其比较的牌索引 for (int j = 2; j < sort.length; j++) { key = sort[j];// 给摸到的牌赋值 i = j - 1;//手中的牌序列 while (i >= 0 && sort[i] > key) {// 定义比较规范,数组下标从零开始的,左手中需要与其比较的牌 sort[i + 1] = sort[i];// 每次循环移动一个位置 i = i - 1;// 下标减一,从右到左 } sort[i + 1] = key;// 元素替换 } for (i = 0; i < sort.length; i++) { System.out.println(sort[i]); }}
} //时间复杂度 c1n^2 c1代表常数,n代表需要排序的数的个数