3. 插入排序

算法思想:
  插入排序的算法思想应该是最容易理解的,打过扑克或者麻将的人一看就懂。就是将数按照大小插入到对应的位置。

算法特点:

  1. 每趟排序不进行数据交换,只是进行数据的移动;
  2. 稳定排序。

在这里插入图片描述

/**
 * 插入排序:会打扑克牌的都能懂
 */
public class InsertSort {
    
    
	public static void insertSort(int[] arr) {
    
    
		int len = arr.length;		
		for (int i = 1; i < len; i++) {
    
    
			// i是未排序区域第一个元素的下标
			// value保存未排序区域第一个元素的值
			int value = arr[i];
			// j初始值为排序区域中最后一个元素的下标
			int j = i - 1;
			for (; j >= 0 && arr[j] > value; j--) {
    
    
				arr[j + 1] = arr[j];
			}
			arr[j + 1] = value;
		}
	}
}

优化思路1:可以用二分折半查找来快速查找到应该插入的位置,然后再进行插入操作。
优化思路2:希尔排序

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/115095835