/**
* 直接插入排序
* 思想:把未排序元素插入到有序子序列中,插入后子序列依旧有序
* 直接插入排序是插入排序类中最简单的一种。其他的有折半插入排序、2-路排序排序、表插入排序等
* 思路:1 默认第一个元素为有序子序列(只有一个元素,必然有序),循环从第二个元素开始
* 2 将第 i个元素 之前的元素 从后往前(也可以从前往后)依次比较,查找插入位置
* 2.1 设置临时变量保存第i个元素
* 2.2 从后往前比较
* 若前一个元素大于临时变量,当前元素往后移一个位置,继续比较前一个元素
* 若有元素小于临时变量,说明前面所有元素都小于,退出循环
* 2.3 返回循环停止时的后一个位置(因为从第 i个元素 前一个元素开始查找,
* 若第一个元素小于临时变量,则返回的是元素I的位置)
* 3 将临时变量放置于插入位置
*
* 希尔排序
* 思想:“缩小增量排序”,属于插入排序类。先将整个待排序序列分割成若干子序列分别进行直接插入排序
* 待整个序列基本有序时,再对全体元素进行一次直接插入排序
* 思路:
* 1 设定初始循环增量为 arr.length/2 ,每次增量排序后 增量减半
* 2 对每次增量区间值执行增量插入排序(递归执行),最后一次为直接插入排序(增量为1)
*/
public class _02_InsertSort {
public static void main(String[] args) {
int[] numbers1 = {
8,3,21,0,100,78,1009,0,-18,9,5,6,11};
int[] numbers2 = {
8,
Java详细直接插入排序与希尔排序
最新推荐文章于 2021-08-17 10:32:54 发布