算法与结构--插入排序
前言 万事万物皆算法,一切的始源与终点皆为 思想 。 在介绍插入算法之前,我们来简单回顾上一篇学的选择排序,选择排序基本思路就是每次遍历找到最小的元素放在首位置,这样他的时间复杂度是n2,但是由于其交换的次数不是很多,他的时间并没有冒泡排序等n2时间大。那么我们本节学习的插入排序有什么优势和缺点呢,废话不多说,割了 ------------------------------------------------------ 插入排序 怎么记住插入排序呢,大家都玩过扑克牌,每次抓玩牌整理纸牌的时候都会挑选出小牌插入到该有的位置,这个工程和插入排序很像,我们先看下插入排序的动图。 从图上可以看出,他的时间复杂度也为n2,而且每次插入会导致后面的元素都交换位置,大家都知道, 数组交换位置相比遍历要耗时的多 ,那么插入排序的优势在哪呢,我们先来写下代码,还是在上一篇的选择排序的基础上写。 /** * 插入排序 */ private static void insertSort(int arr[]) { for (int i = 1; i < arr.length; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { SortHelper.swapArr(arr, j, j - 1); } } } } 代码很简单