首页 > 编程语言 >选择插入排序改进思路加算法实现

选择插入排序改进思路加算法实现

时间:2024-08-01 18:27:14浏览次数:16  
标签:arr int 插入排序 元素 若待排 算法 思路 排序 赋值

首先默认第一个元素是已排序的,剩下元素是待排序的,从第二个元素开始遍历
取出待排序区域的第一个元素element
和已排序区域的最后一个元素a[j]往前开始比较大小
若待排元素大于等于最后一个元素则直接跳出循环 将待排元素赋值给a[j+1]
若待排元素小于最后一个元素 将最后一个元素的值赋值给a[j+1] 然后j-- 继续比较倒数第二个元素和待排元素...

java代码实现

import java.util.Arrays;

public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {5, 3, 8, 6, 2, 7, 1, 4};
        insertSort(arr);
    }
    private static void insertSort(int[] arr){
//        i代表待插入元素的索引
        for (int i=1;i<arr.length;i++){
//            待排的素
            int element=arr[i];
//            已排序区域的最后元素索引
            int j=i-1;
//            j表示已排序区域元素的下标 大于等于0说明有已排序元素 需比较
            while(j>=0){
//           若待排元素小于最后一个元素 将最后一个元素的值赋值给a[j+1] 然后j-- 继续比较倒数第二个元素和待排元素...
                if (element<arr[j]){
                    arr[j+1]=arr[j];
                }else{
//           若待排元素大于等于最后一个元素则直接跳出循环 将待排元素赋值给a[j+1]
                    break;
                }
                j--;
            }
            arr[j+1]=element;
            System.out.println(Arrays.toString(arr));
        }
    }
}

标签:arr,int,插入排序,元素,若待排,算法,思路,排序,赋值
From: https://blog.csdn.net/a486368464/article/details/140833168

相关文章

  • 折半插入排序算法思想及代码实现
    折半插入排序(BinaryInsertionSort)是插入排序算法的一种优化版本。插入排序的基本思想是将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增加1的有序表。传统的插入排序在寻找插入位置时,采用的是顺序比较的方式,即逐个与有序表中的元素进行比较,直到找到比待插入......
  • 数据结构与算法 - 递归
    一、递归1. 概述定义:在计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。比如单链表递归遍历的例子:voidf(Nodenode){if(node==null){return;}println("before:"+node.value)f(node.next);pr......
  • 数据结构与算法 - 链表
    一、链表1.概述定义:在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。可以分类为:单向链表,每个元素只知道其下一个元素是谁双向链表,每个元素直到其上一个元素和下一个元素循环链表,通常的链表尾节点tail指向的都是null,而循环链表......
  • OpenSSH秘钥指纹图像生成算法
    OpenSSH秘钥指纹图像生成算法使用SSH秘钥生成时产生疑惑,它的randomartimage是如何生成的?下面进行了探索和研究引入生成位数为4096位的rsa公私钥ssh-keygen-trsa-b4096Generatingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.s......
  • 第2章 基础算法
    2.1初级(1)尺取法⭐反向扫描(左右指针)hdu2029Palindromes_easyversionimportjava.util.Scanner;publicclassMain{ publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); intn=sc.nextInt(); for(;n>0;n--){ char[]s......
  • 论文阅读:高效的广义最稠密子图发现算法
    摘要这篇论文提出了一种高效算法,通过利用广义超模密度定义和......
  • 机器学习-算法分类以及用途
    1.监督学习算法线性回归(LinearRegression)目的:用于预测一个或多个自变量(X)与因变量(Y)之间的线性关系。应用领域:房价预测、销售预测、温度预测等连续值预测问题。逻辑回归(LogisticRegression)目的:虽然名为回归,但实际上是用于二分类问题的分类算法。应用领域:垃圾邮件识别、......
  • prim算法求最小生成树
    prim算法求最小生成树#include<bits/stdc++.h>usingnamespacestd;constintN=600;intg[N][N];//n的平方约等于m,所以用邻接矩阵,存放权值。g[i][j]表示边ij的长度为g[i][j]constintinf=0x3f3f3f3f;//无穷大0x3f3f3f3fintdist[N];//该点到集合里点的最小值boolst[N]......
  • 克鲁斯卡尔算法
    克鲁斯卡尔算法稀疏图-->用克鲁斯卡尔算法克鲁斯卡尔算法套路:首先存放每条边用struct然后按照权值从小到大排序然后如果这条边的两个端点已经在一个连通块就不要把这条边放进来(因为生成树不能有闭合回路)如已经有边12,边13不能再放入边23判断连通块用find函数利用并查集算法......
  • 刀具磨损预测工器具磨损预测-RIME-CNN-SVM霜冰算法优化-完整代码数据
    直接看项目演示:刀具磨损预测工器具磨损预测-RIME-CNN-SVM霜冰算法优化_哔哩哔哩_bilibili效果演示:代码: importnumpyasnpimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.optimasoptimfromtorch.utils.dataimportDataLoad......