番禺人才市场档案中心谷歌外贸seo
插入排序(直接插入排序)
介绍
对于少量元素的排序,它是一个有效的算法,插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的。记录增加1的有序表,在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素有序表进行待插入位置查找,并进行移动
-
插入排序的平均时间复杂度也是 O(n^2),空间复杂度为常数阶 O(1),具体时间复杂度和数组的有序性也是有关联的。
-
插入排序中,当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较 N-1 次,时间复杂度为 O(N)。最坏的情况是待排序数组是逆序的,此时需要比较次数最多,最坏的情况是 O(n^2)。
演示过程
算法实现
package sort;import java.util.Arrays;public class QuickSort {public static void main(String[] args) {int [] arr = {1,43,23,43,235,234};sort(arr);}public static void sort(int[] arr) {int insertVal = 0;int insertIndex = 0;for (int i = 1; i < arr.length ; i++) {insertVal = arr[i];insertIndex = i - 1;// 遍历 给insetVal找插入的合适位置// 判断说明: insertIndex >=0 保证下标不越界// insertVal < arr[insertIndex] 说明一直都没找到插入的位置while (insertIndex >= 0 && insertVal < arr[insertIndex]) {// 如果一直都没有找到就需要将其后移arr[insertIndex + 1] = arr[insertIndex];insertIndex--;}if (insertIndex != i) {arr[insertIndex + 1] = insertVal;}}System.out.println(Arrays.toString(arr));}}