博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java数组实现针对一个有序的数组插入一个数据并保持数组有序。
阅读量:3960 次
发布时间:2019-05-24

本文共 2536 字,大约阅读时间需要 8 分钟。

文章目录

1,排序介绍

针对这个问题,其实可以看做是插入排序中的有序排序。简单的介绍哈,插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。

2,思路分析

可分为三种情况来考虑,第一种头插法也就是将数据插入到数组的第一个,这种情况插入的数据是最大值或最小值。第二种情况是将数据插入到数组中,插入的数组取值范围在最大值与最小值之间。第三种情况的也就是尾插法,插入的数据是最大值或最小值。

第一种头插法

输入有序数组:arr ={2,3,6,89}
插入的记录(数据):1
输出插入数据的有序数组:arr ={1,2,3,6,89}

第二种插入数组之间

有序数组:arr ={2,3,6,89}
插入的记录(数据):5
返回的有序数组:arr ={2,3,5,6,89}

第二种尾插法

有序数组:arr ={2,3,6,89}
插入的记录(数据):100
返回的有序数组:arr ={2,3,6,89,100}

3,java代码实现

package sort;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * project_name: JavaDemo * filename:  InsertSort * IDE:   IntelliJ IDEA * author: ganxiang * CreateDate:2020-07-18 16:04 */public class InsertSort {
//头插法 private List insertHead(int [] arr,int data){
int len =arr.length; int [] a =new int[len+1]; int k=0; if (data<=arr[0]) a[k]=data; for (int i = 0; i <=len-1 ; i++) {
k+=1; a[k]=arr[i]; } List
list =new ArrayList<>(); for (int num:a) {
list.add(num); } return list; } //插入数据到数组之中 private List insertBody(int [] arr,int data){
int len =arr.length; int [] a =new int[len+1]; int k=0;//通过移动k插入数据 for (int i = 0; i <=len-1 ; i++) {
if(data>=arr[i]&&data<=arr[i+1]){
a[k]=arr[i]; k+=1; a[k]=data; i+=1; k+=1; } a[k]=arr[i]; k+=1; }// System.out.println(Arrays.toString(a)); List
list =new ArrayList<>(); for (int num:a) {
list.add(num); } return list; } //尾插法 private List insertTial(int [] arr,int data) {
int len = arr.length; int[] a = new int[len + 1]; int k = 0; for (int i = 0; i <= len - 1; i++) {
a[k] = arr[i]; k += 1; } if (data >= arr[len - 1]) a[k] = data; List
list = new ArrayList<>(); for (int num : a) {
list.add(num); } return list; } public static void main(String[] args) {
int [] arr ={
2,3,6,89}; System.out.println("输入的有序数组arr为:"+Arrays.toString(arr)); System.out.println("1,头插法插入数据1后的有序数组为:"+new InsertSort().insertHead(arr,1)); System.out.println("2,在数组之中插入数据5后有序的数组为:"+new InsertSort().insertBody(arr,5)); System.out.println("3,尾插法插入数据100后的有序数组为:"+new InsertSort().insertTial(arr,100)); }}

4,运行结果

在这里插入图片描述

转载地址:http://zrqzi.baihongyu.com/

你可能感兴趣的文章
PHP统计当前网站的访问人数,访问信息,被多少次访问。
查看>>
Windows10远程报错CredSSP加密oracle修正
查看>>
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
每天自动升级你的Centos
查看>>
WDCP v3版本的小工具集
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>
Mysql修改最大连接数&重启
查看>>
华为交换机划分vlan
查看>>
CentOS 6.6 搭建Zabbix 3.4.8 过程
查看>>
make: *** No targets specified and no makefile found. Stop.解决方法
查看>>
安装zabbix 3.4版本编译报错configure: error: Unable to use libevent (libevent check failed) 解决办法
查看>>
一行代码更改密码
查看>>
非插件实现cookie版Typecho文章阅读次数统计功能
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>