首页 > 其他分享 >数组插入排序

数组插入排序

时间:2023-09-29 14:56:09浏览次数:41  
标签:tmp 数组 int 插入排序 public -- ints 比较

  • 第1次推导
public class test {
    public static void main(String[] args) {
        int[] ints = {2,5,3,1,8,9};
        int tmp; // 存储临时变量
        int j; // 开始比较第几位的数

        // 第1次
        // 2,5,3,1,8,9
        j = 1;  // 比较索引1的数
        tmp = ints[j];  // 取出值放到临时变量中
        if (j>0){  // 直到比到第0位
            if(tmp>ints[j-1]){
                // 取出的值比前一个值大,则直接跳出
                // break;
            }else {
                // 反之则第0位的值覆盖第1位
                ints[j]=ints[j-1];
            }
            j--; // 上面直接跳出循环了,j=1
        }

        // 第2次
        // 2,5,3,1,8,9
        // 2,3,5,1,8,9
        j = 2;
        tmp = ints[j];
        if (j>0){  // 直到比到第0位
            if(tmp>ints[j-1]){
                // 比较到中间时
                ints[j]=tmp;
                // 取出的值比前一个值大,则直接跳出
                // break;
            }else {
                // 反之则第0位的值覆盖第1位
                ints[j]=ints[j-1];
            }
            j--;  // 比较第2次时就跳出了,j=1
        }

        // 第3次
        // 2,3,5,1,8,9
        // 1,2,3,5,8,9
        j = 3;
        tmp = ints[j];
        if (j>0){  // 直到比到第0位
            if(tmp>ints[j-1]){
                // 比较到中间时
                ints[j]=tmp;
                // 取出的值比前一个值大,则直接跳出
            }else {
                // 反之则第0位的值覆盖第1位
                ints[j]=ints[j-1];
            }
            j--;  // 需要比较3次,j=0
        }
        // 如果tmp中存入的数是最小的,需要比较3次
        // 当3次比较完后变成   2,2,3,5,8,9
        // 需要将tmp插入位置0
        if(j==0){
            ints[0]=tmp;
        }

    }
}
  • 最终完善
public class test {
    public static void main(String[] args) {
        int[] ints = {2,5,3,1,8,9};
        int tmp; // 存储临时变量
        int j; // 需要与前面多个数比较

        for (int i = 1; i < ints.length; i++) {  // 需要取出数组长度-1次
            tmp=ints[i];
            j=i;  // 取出第i个数,则至少比较i次,内循环
            do{
                if(tmp>ints[j-1]){
                    ints[j]=tmp; // 比较到中间位置结束的
                    break; // 直接结束的
                }else {
                    // 移动位置,内循环次数减1
                    ints[j]= ints[j-1];
                    j--;
                }
            }while (j>0); // 比到第0位时结束
            // 当取出的数是最小的数时,赋值给第0位
            if(j==0){
                ints[0]=tmp;
            }
        }
        for (int i = 0; i < ints.length; i++) {
            System.out.println(ints[i]);
        }

    }
}

标签:tmp,数组,int,插入排序,public,--,ints,比较
From: https://www.cnblogs.com/dogleftover/p/17736997.html

相关文章

  • [LeetCode] 2251. 花期内花的数目 - 二分查找/有序数组
    Problem:2251.花期内花的数目思路看题目应该是一道比较经典的差分,本来准备拿差分数组做的,后来搂了一眼题解,发现用二分的方法更简单解题方法此题有一种很简便的方法,第i个人到达时间为people[i],所以我们不难找到在这个时间之前花期已经开始的花的数量,即v1=start<=people[i]......
  • c语言,一维数组指针
    @TOC前言今天我们讲一下一维数组指针。一、一维数组指针的定义:概述:数组指针,就是数组类型的指针。数组里面的每一个元素都是一个地址。可以让数组指针指向一个数组的地址,通过地址遍历数组的各个元素。定义一维数组指针的步骤:inta[5]={4,5,6,7,8};//定义一个数组int(*......
  • 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组
    2023-09-13:用go语言,给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。输入:nums=[4,3,2,3,5,2,1],k=4。输出:True。答案2023-09-13:第一种算法(canPartitionKSubsets1)使用动态规划的思想,具体过程如下:1.计算数组nums的总和sum......
  • 前端 数组删除元素
    以下是几种常用的数组删除数据的方式:使用pop()方法:pop()方法用于删除数组的最后一个元素,并返回被删除的元素。//示例数组letarr=[1,2,3,4];//删除最后一个元素letremovedElement=arr.pop();console.log(arr);//[1,2,3]console.log(removedElement);//4使......
  • 小程序数组数据变化渲染的不是最新值?
    微信小程序切换后数据不是最新值如果是相同的key此时vue会跳过更新复用上次的dom和值,把第二个的别名item换成不相同的,比如item1,还不行就第二个的index换成index1key也换成index1<viewclass="queryCert-result-list"v-if="list.length>0"><viewclass="queryCert-result-list......
  • 数组能改变大小吗
    提问数组能改变大小吗回答能usingSystem;publicclassSamplesArray{publicstaticvoidMain(){//Createandinitializeanewstringarray.String[]myArr={"The","quick","brown","fox","jump......
  • 如何将数组中元素为空的数据过滤掉?
    场景:后台返回所有文件列表信息,需要将fileId有值的文件过滤出来回显到页面上。错误处理:使用map+if判断letarr=[{fileId:'1',fileName:'缴费明细表'},{fileId:'2',fileName:'支付明细表'},{fileId......
  • 根据一个数组,创建一个Segment Tree(线段树)
    线段树的特点线段树的优势线段树的构造过程(0,5)37:数组元素下标0~5的元素之和是37(0,2)21:数组元素下标0~2的元素之和是21线段树的基本数据结构(结点结构由五个分量组成)运行结果(C语言代码)递归的创建一颗线段树,然后中序、先序、后序遍历这个结点#include<stdio.h>#include<st......
  • js 检索数组对象中某个属性的值是否不相等
    //判断选中的项是否有不相同的模型consthasNameProperty=_this.selectedOrderList.filter(order=>order.hasOwnProperty("item_model_id"));if(hasNameProperty.length>0){constisEveryNameEqual=hasNameProperty.reduce((prev,curr)=>{if......
  • python numpy 数组操作
          ......