广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现插入排序
  • 383
分享到

Java实现插入排序

2024-04-02 19:04:59 383人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

问题描述 利用插入排序把一列数组按从小到大或从大到小排序 (一)、插入排序思想 以从小到大为例: 1、第一轮插入,从第二个数开始,与前面的数依次比较,遇到比自己小的数,就插入到该数后

问题描述

利用插入排序把一列数组按从小到大或从大到小排序

(一)、插入排序思想

以从小到大为例:

1、第一轮插入,从第二个数开始,与前面的数依次比较,遇到比自己小的数,就插入到该数后面的位置
2、第二轮插入,从第三个数开始,与前面的数依次比较,遇到比自己小的数,就插入到该数后面的位置
3、如此循环,直到所有数从小到大排列

(二)、问题分析

1. 输入数组

根据用户输入的进行排序的数字数量n,建立一个长度为n的数组


public static void main (String[] args){
  int n,m;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想排序的数量n");
        n=sc.nextInt();
        
        int [] arrary = new int[n];
        System.out.println("请输入"+n+"个数,并用空格隔开");
        
        for(int i=0;i<arrary.length;i++){
            arrary[i]=sc.nextInt();
        }

2.输入如何排序

设置两条路径:m=1为从小到大,m=2为从大到小,m=其他 提醒用户重新输入


System.out.println("请问你想:1.从小到大 2.从大到小 排序?");
        m=sc.nextInt();

        while (m!=1 && m!=2 ){
            System.out.println("输入有误请再次输入");
            m = sc.nextInt();
            continue;
        }

3.排序算法

(1)数组长度 arrary.length 也就是用户输入的 n
(2)j 表示第 j 轮排序,这里面n-1轮排序就已足够
(3)k 表示第 k+1 个位置,arrary[k] 表示第 k+1 个位置的数
(4)每一轮的 k 从 j-1 开始,向前依次比较,每比较一次做一次k- -,直到遇到比该数小的数,则插入到这个较小数的后面
(5)上述想法可转换为:每一轮的 arrary[k+1] 与其前面比自己大的数交换位置,遇到比自己小的数则停止
(6)较大数与较小数交换位置的经典算法:若a>b; 则c=a; a=b; b=c;
(7)从大到小排序只需把 arrary[k]>arrary[k+1] 换成 arrary[k]<arrary[k+1] 即可
(8)选择进行何种排序,在 if 语句的判断框里加上此时m应该等于的值
(9)因为要先选择进行何种排序,才能进行排序,所以把 m==1 放在 arrary[k]>arrary[k+1] 前面,且用短板与 && ,这样更易于理解(如果m≠1,则直接进行else if 的语句)
(10)也可以 m==1 & arrary[k]>arrary[k+1] 或 arrary[k]>arrary[k+1] & m==1,但不能 arrary[k]<arrary[k+1] && m==2。


for (int j=1;j<arrary.length;j++){
            for (int k=j-1;k>=0;k--){
                if(m==1 && arrary[k+1]<arrary[k] ){
                    int a=arrary[k+1];
                    arrary[k+1]=arrary[k];
                    arrary[k]=a;
                }
                else if(m==2 && arrary[k]>arrary[k+1]){
                    int a=arrary[k+1];
                    arrary[k+1]=arrary[k];
                    arrary[k]=a;
                }

            }
        }

4.输出数组

由于输出的是一段数组,所以还需要引用一段 for 语句


System.out.print("选择"+m+"的结果为:");
        for(int j=0;j<arrary.length;j++)
            System.out.print(arrary[j]+" ");

(三)、完整代码

把上述代码整理一下


import java.util.Scanner;
public class Insertion {
    public static void main (String[] args){
        int n,m;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想排序的数量n");
        n=sc.nextInt();

        System.out.println("请问你想:1.从小到大 2.从大到小 排序?");
        m=sc.nextInt();

        while (m!=1 && m!=2 ){
            System.out.println("输入有误请再次输入");
            m = sc.nextInt();
            continue;
        }

        int [] arrary = new int[n];
        System.out.println("请输入"+n+"个数,并用空格隔开");
        for(int i=0;i<arrary.length;i++){
            arrary[i]=sc.nextInt();
        }

        for (int j=1;j<arrary.length;j++){
            for (int k=j-1;k>=0;k--){
                if(m==1 && arrary[k+1]<arrary[k] ){
                    int a=arrary[k+1];
                    arrary[k+1]=arrary[k];
                    arrary[k]=a;
                }
                else if(m==2 && arrary[k]>arrary[k+1]){
                    int a=arrary[k+1];
                    arrary[k+1]=arrary[k];
                    arrary[k]=a;
                }

            }
        }

        System.out.print("选择"+m+"的结果为:");
        for(int j=0;j<arrary.length;j++)
            System.out.print(arrary[j]+" ");

    }
}

(四)、运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java实现插入排序

本文链接: https://www.lsjlt.com/news/133749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现插入排序
    问题描述 利用插入排序把一列数组按从小到大或从大到小排序 (一)、插入排序思想 以从小到大为例: 1、第一轮插入,从第二个数开始,与前面的数依次比较,遇到比自己小的数,就插入到该数后...
    99+
    2022-11-12
  • Java实现插入排序,希尔排序和归并排序
    目录插入排序算法步骤动图演示JavaScript代码实现Python代码实现Go代码实现Java代码实现希尔排序算法步骤JavaScript代码实现python代码实现Go代码实现J...
    99+
    2022-12-22
    Java插入排序 Java希尔排序 Java归并排序 Java排序
  • Java实现直接插入排序与折半插入排序的示例详解
    目录1.直接插入排序2. 折半插入排序1.直接插入排序 插入排序的基本思想: 主要分为两个区间, 无序区间和有序区间, 每次选择无序区间的第一个元素, 在有序区间内选择合适的位置进行...
    99+
    2022-11-13
  • Java折半插入排序怎么实现
    这篇文章主要讲解了“Java折半插入排序怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java折半插入排序怎么实现”吧!插入排序思想介绍折半插入排序与直接插入排序算法原理相同。只是,...
    99+
    2023-06-02
  • 插入排序/折半插入排序
    插入排序/折半插入排序 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入...
    99+
    2023-10-07
    排序算法 算法 java
  • 排序算法图解之Java插入排序
    目录1.插入排序简介2.插入排序思想及图解3.插入排序代码实现1.插入排序简介 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序...
    99+
    2022-11-13
    Java 插入排序算法 Java插入排序 Java 排序算法
  • C#实现冒泡排序和插入排序算法
    1.选择排序(冒泡排序) 升序 用第一个元素跟其他元素比较,如果该元素比其他元素,则交换,保证该元素是最小的。然后再用第二个元素跟后面其他的比较,保证第二个元素是除第一个最小的。依次...
    99+
    2022-11-13
  • Java数据结构之插入排序与希尔排序怎么实现
    这篇文章主要介绍“Java数据结构之插入排序与希尔排序怎么实现”,在日常操作中,相信很多人在Java数据结构之插入排序与希尔排序怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据结构之插入排序...
    99+
    2023-07-05
  • 插入排序算法之希尔排序+直接插入排序
    目录希尔排序一、直接插入排序1. 单趟排序2. 直接插入排序二、希尔排序三、测试希尔排序和直接插入排序性能希尔排序 在介绍希尔排序之前,先了解一下直接插入排序 一、直接插入排序 1....
    99+
    2022-11-12
  • Java中插入排序算法之希尔排序+直接插入排序的示例分析
    这篇文章给大家分享的是有关Java中插入排序算法之希尔排序+直接插入排序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。希尔排序在介绍希尔排序之前,先了解一下直接插入排序一、直接插入排序1. 单趟排序x插...
    99+
    2023-06-25
  • web中如何实现插入排序
    这篇文章主要为大家展示了“web中如何实现插入排序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web中如何实现插入排序”这篇文章吧。插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是...
    99+
    2023-06-28
  • TypeScript十大排序算法插入排序怎么实现
    今天小编给大家分享一下TypeScript十大排序算法插入排序怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一. 插...
    99+
    2023-07-05
  • python中怎么实现冒泡排序和插入排序
    本篇文章给大家分享的是有关python中怎么实现冒泡排序和插入排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1、冒泡排序  冒泡排序的主要思想类似于水底的气泡,从水底向...
    99+
    2023-06-02
  • Java插入排序举例分析
    本篇内容主要讲解“Java插入排序举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java插入排序举例分析”吧!插入排序原理①把所有元素分成已排序和未排序两组②找到未排序组的第一个元素,向...
    99+
    2023-06-25
  • JAVA小练习冒泡排序,选择排序和插入排序
    冒泡:点击(此处)折叠或打开...
    99+
    2023-06-02
  • Java 选择排序、插入排序、希尔算法实例详解
           1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。...
    99+
    2023-05-31
    java 选择排序 插入排序
  • Java 十大排序算法之插入排序刨析
    目录插入排序原理插入排序API设计插入排序代码实现插入排序的时间复杂度分析插入排序原理 ①把所有元素分成已排序和未排序两组 ②找到未排序组的第一个元素,向已经排序的组中进行插入 ③倒...
    99+
    2022-11-12
  • JAVA十大排序算法之插入排序详解
    目录插入排序代码实现动图演示代码实现时间复杂度算法稳定性总结插入排序 当我们在玩扑克牌的时候,总是在牌堆里面抽取最顶部的一张然后按顺序在手中排列。 插入排序是指在待排序的元素中,假设...
    99+
    2022-11-12
  • 使用java代码和伪代码实现插入排序
    插入排序介绍:相信大部分人都打过扑克牌,许多人喜欢发一张牌就拿一张牌到手上,并且按顺序来放好牌。开始时我们左手为空,牌在桌子上。然后我们每次从桌子上拿走一张牌并将它插入左手中的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张...
    99+
    2015-01-23
    java教程 java 插入排序 伪代码
  • 利用Java如何实现一个二分插入排序
    这篇文章给大家介绍利用Java如何实现一个二分插入排序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、折半插入排序(二分插入排序)将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法...
    99+
    2023-05-31
    java 二分插入排序 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作