当前位置: 首页 > news >正文

Java数据结构之《直接插入排序》问题

一、前言:

  这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完,并成功实现,会陆续更新,记得三连哈哈! 所有答案供参考,不是标准答案,是博主自己研究的写法。(这一个题书上也有现成的代码,重要的是理解它的算法原理!)

二、题目要求如下: 

(第 7 题) 直接插入排序(难度系数75)

直接插入排序

描述

利用直接插入排序算法实现线性表的排序。要求输出第k趟排序的结果。例如原来线性表为:26,12,25,4,36,15,21,第一趟直接排序排序结果为: 12, 26,25,4,36,15,21,第二趟直接插入排序结果为: 12,25, 26,4,36,15,21。

输入

第一个为元素个数n(1<=n<=1000),第二行为n个元素值(整数),即需要排序的元素个数,第三行为k(1<=k<=n-1),即要求的第k趟排序结果。

输出

对每一测试用例,用一行输出第k趟排序结果,用空格隔开。

样例输入
5
2 4 1 9 7
3

样例输出

1 2 4 9 7

三、代码实现:(代码的做题原理全部在代码注释中,若还有疑问也可以翻书)

(1)自己创建了一个直接插入排序类:

package com.fs.so;
import java.util.Scanner;
public class Insert_Sort {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();  //排序的元素个数int[]data= new int[n];for(int i=0;i<n;i++){data[i]=sc.nextInt();  //依次给每个元素赋值}int k = sc.nextInt();  //要求进行直接插入排序的躺数for(int j=1;j<=k;j++){int temp=data[j];  //从第二个元素(无序区)开始进行插入排序,默认第一个元素是有序区int x=j-1;  //之所以放外面是为了外循环可以使用a变量while(x>=0&&data[x]>temp){  //如果有序区的最后一个元素要大于无序区的第一个要插入的元素,那么插入进去的元素要与有序区最后一个元素调换位置data[x+1]=data[x]; //把原来有序区的较大的那个元素给它赋值到后面一个位置--x; //再x先减1,判断有序区的上一个元素是否也大于插进来的那个元素,如何是,则又把插入的元素前移}data[x+1]=temp;  //若比较完后:要插入排序的元素要比所有,在有序区的所有元素都大,那么直接放在原来无序区的第一个元素位置,并j++有序区扩大,无序区缩小}for(int b=0;b<n;b++){System.out.print(data[b]+" ");}}
}

四、不同情况的代码测试运行结果:

<1>首先是题目中的测试输入样例:

<2>其他情况测试结果:

http://www.lryc.cn/news/248057.html

相关文章:

  • 向量场中的几个恒等式
  • 异行星低代码平台--第三方插件对接:钉钉平台对接(一)
  • MyBatis使用教程详解<下>
  • C++基础 -17-继承中 基类与派生构造和析构调用顺序
  • uniapp实现表单弹窗
  • Ajax 是什么? 如何创建一个 Ajax?
  • 【LeetCode】101. 对称二叉树
  • O-Star|再相识
  • 最新PHP熊猫头图片表情斗图生成源码
  • 子虔科技出席2023WAIC“智能制造融合创新论坛”
  • 递归算法学习——二叉树的伪回文路径
  • Android端极致画质体验之HDR播放
  • 【Java SE】带你在String类世界中遨游!!!
  • Android: ListView + ArrayAdapter 简单应用
  • 前端:实现二级菜单(点击实现二级菜单展开)
  • Spark-java版
  • RabbitMQ消息模型之Work Queues
  • vue3+ts 实现时间间隔选择器
  • PTA 魔法优惠券
  • P8A110-A120经典赛题
  • 文件基础知识
  • 二叉树OJ题之二
  • MySql表中添加emoji表情
  • 【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库
  • 2023最新的软件测试热点面试题(答案+解析)
  • NCo3.1(08) - Nco3 服务器端编程
  • 【代码随想录】算法训练计划36
  • Python (十五) 面向对象之多继承问题
  • 广域网加速技术
  • 构建智能医患沟通:陪诊小程序开发实战