插入排序
解析
- 工作机理:与打牌时整理手中牌的做法差不多,假设一开始左手为空,整理卡牌时是每次从桌上拿起一张卡牌,插入到左手中已整理好的序列中。
- 代码解析:从工作机理可知,我们需要两层循环,第一层循环遍历桌上的每一张卡牌,第二层遍历左手中已整理好的卡牌,第一层遍历到的卡牌与第二层已排序好的卡牌逐一比较,找到可插入的地方插入,即交换位置。
- 举例
- 特点:原地排序,即在已有的数组上排序,不需要浪费内存空间创建一个新的数组。适用于数组长度较小的数组。
代码
/**
* 插入排序-升序
*/
public static void insertionSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int key = array[i];
int j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
}