直接插入排序~

往有序的系列中插入一个元素,对于长度为len 数组,开始的 0 号元素是有些的,从第1 号元素开始,进行插入到前面有序的系列中

跟前面有序元素对比无序则立即插入排序

java 复制代码
        int[] data = {0,5,4,8,9,3,2,67,23};
        int len = data.length;

        for(int start_index = 1;start_index <= len -1;start_index++){
            int insert_data = data[start_index];
            for(int i = start_index -1;i >=0;i--){
                if(data[i]>insert_data){
                    data[i+1]=data[i];
                }else{
                    data[i+1]=insert_data;
                    break;
                }
            }
        }
    }

找到插入索引i+1 ,再一次性移动元素

java 复制代码
        int[] data = {0,5,4,8,9,3,2,67,23};
        int len = data.length;

        for(int start_index = 1;start_index <= len -1;start_index++){
            for(int i = start_index -1;i >=0;i--){
                if(data[start_index] > data[i] ){
                    //i+1 ~ start_index
                    if(i+1 == start_index)break;

                    int tmp = data[start_index];

                    for(int j = start_index -1; j >= i+1;j--){
                        data[j+1]=data[j];
                    }
                    data[i+1] = tmp;

                    break;
                }
            }
        }
    }

写希尔排序,直接将简单排序下表对用修改,发现这里少了一个逻辑判断,也就是当有序元素跟下一个比较元素相比都是逆序的,此时需要将第0个元素赋值为插入元素

复制代码
if(i == 0) data[i]=insert_data;
java 复制代码
            for(int start_index = 1;start_index <= len -1;start_index++){
                int insert_data = data[start_index];
                for(int i = start_index -1;i >=0;i--){
                    if(data[i]>insert_data){
                        data[i+1]=data[i];
                    }else{
                        data[i+1]=insert_data;
                        break;
                    }
                    if(i == 1) data[i]=insert_data;
                }
            }
相关推荐
阿旭超级学得完1 分钟前
C++11包装器(function和bind)
java·开发语言·c++·算法·哈希算法·散列表
輕華1 分钟前
uv工具详解——Python包与项目管理器完全指南
开发语言·python·uv
li星野3 分钟前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
jerryinwuhan6 分钟前
hello算法,简单讲(1)
算法·排序算法
y = xⁿ9 分钟前
20天速通LeetCodeday15:BFS广度优先搜索
算法·宽度优先
400分12 分钟前
吃透RAG核心-----语义检索与关键字检索底层原理
算法·架构
目黑live +wacyltd20 分钟前
算法备案:常见驳回原因与应对策略
人工智能·算法
念何架构之路23 分钟前
Go语言常见并发模式
开发语言·后端·golang
磊 子44 分钟前
多态类原理+四种类型转换+异常处理
开发语言·c++·算法