房地产管理局网站,织梦网站数据库库直接上传的 没有后台备份 需要怎么还原,wordpress内容主题模板下载,网站图片的像素一、前言#xff1a; 这是怀化学院的#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究#xff0c;问题基本解决#xff0c;若有bug欢迎下方评论提出意见#xff0c;我会第一时间改进代码#xff0c;谢谢#xff01;) 后面其他编程题只要我写完… 一、前言 这是怀化学院的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(1n1000)第二行为n个元素值(整数)即需要排序的元素个数第三行为k(1kn-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 i0;in;i){data[i]sc.nextInt(); //依次给每个元素赋值}int k sc.nextInt(); //要求进行直接插入排序的躺数for(int j1;jk;j){int tempdata[j]; //从第二个元素(无序区)开始进行插入排序默认第一个元素是有序区int xj-1; //之所以放外面是为了外循环可以使用a变量while(x0data[x]temp){ //如果有序区的最后一个元素要大于无序区的第一个要插入的元素那么插入进去的元素要与有序区最后一个元素调换位置data[x1]data[x]; //把原来有序区的较大的那个元素给它赋值到后面一个位置--x; //再x先减1判断有序区的上一个元素是否也大于插进来的那个元素如何是则又把插入的元素前移}data[x1]temp; //若比较完后要插入排序的元素要比所有在有序区的所有元素都大那么直接放在原来无序区的第一个元素位置并j有序区扩大无序区缩小}for(int b0;bn;b){System.out.print(data[b] );}}
}
四、不同情况的代码测试运行结果
1首先是题目中的测试输入样例 2其他情况测试结果