import java.util.Arrays;
import java.util.Scanner;

public class jh_54_数组的插入算法 {
/*
* 有一组学员的成绩{99,85,82,63, 60},
* 将它们按升序排列。
* 要增加一个学员的成绩,
* 将它插入成绩序列,并保持升序。
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] oldArray = {99,85,82,63,60};
/*
* 1:对原数组进行排序。
* 2:把原数组拷贝到新数组中,
* 3: 寻找插入的位置。
* 4:挪。
* 5:给插入的位置赋值。
* 6:迭代新数组,查看是否插入。
*/
// 1:对原数组进行排序。
Arrays.sort(oldArray);

// 2:把原数组拷贝到新数组中
int [] newArray = new int[oldArray.length+1];
for (int i = 0; i < oldArray.length; i++) {
newArray[i]= oldArray[i];
}

// 3: 寻找插入的位置。
System.out.println("请输入你要插入的数值:num");
int num = sc.nextInt();
int index = newArray.length-1;
for (int i = 0; i < newArray.length; i++) {
if(newArray[i] > num) {
index = i;
break;
}
}

// 4:挪。
if(index != newArray.length-1) {
for (int i = newArray.length-1; i>=index; i--) {
newArray[i]= newArray[i-1];
}
// 5:给插入的位置赋值。
newArray[index] = num;
}else {
//5:给插入的位置赋值。
newArray[index] = num;
}
// 6:迭代新数组,查看是否插入。
for(int i:newArray) {
System.out.print(i+", ");
}

// 将它们按升序排列。
// int [] oldArray = {99,85,82,63,60};
// bubbleSort(oldArray);
// print(oldArray);
要增加一个学员的成绩,将它插入成绩序列,并保持升序。
// int [] newArray = copyArray(oldArray);
// // 迭代新数组
// print(newArray);
int index = searchInsertIndex(newArray,155);
System.out.println(index);
//
// move(newArray, 77);
// print(newArray);

}
/*
* 写一个函数,用于,挪位置。
* 返回值类型 void
* 参数列表。int [] arr ,int num
*/
public static void move(int []arr,int num) {
int index = searchInsertIndex(arr, num) ;

if(index != arr.length-1) {
for (int i = arr.length -1; i >= index ; i--) {
arr[i]= arr[i-1];
}
arr[index] = num;
}else {
arr[index] = num;
}
}

/*
* 遍历数组,
* 作比较。
* 如果列表元素值,比你插入的数大就找到插入位置了。
*
* 写一个函数,用于查找insert 的位置 index。
* 1:返回值类型。int
* 2:参数列表。int [] arr ,int insert
*/
public static int searchInsertIndex(int [] arr,int num) {
// 遍历数组
for (int i = 0; i < arr.length; i++) {
if(arr[i]>num) {
return i;
}
}
return arr.length-1;
}

/**
* 写一个函数,用于拷贝老数组到新数组中。返回一个新数组。
* 返回值类型 int []
* 参数列表。 int [] arr;
* 声明一个新数组,长度为原数组长度加1
* 迭代原数组,取出每一个元素,依次存储到新数组中。
* @param arr
*/
public static int [] copyArray(int [] oldArray ) {
// 声明一个新数组,长度为原数组长度加1
int [] newArray = new int[oldArray.length+1];
// 迭代原数组,取出每一个元素,
for (int i = 0; i < oldArray.length; i++) {
// 依次存储到新数组中。
newArray[i] = oldArray[i];
}
return newArray;
}
/*
* 冒泡排序
*/
public static void bubbleSort(int [] arr) {
/*
* Bubble Sort
*
* 列表中相邻的两个元素。
* arr[i]--arr[i+1]
*/
for (int j = 0; j < arr.length-1; j++) {
for (int i = 0; i < arr.length -j-1; i++) {
if(arr[i]>arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
/*
* 遍历迭代。
* 1:返回值类型。void
* 2:参数列表。int [] arr
*/
public static void print(int [] arr) {
for (int i : arr) {
System.out.print(i+", ");
}
System.out.println();
}
}

转载于:https://www.cnblogs.com/lipeitong/p/11053086.html

java_数组插入001相关推荐

  1. Java 数组插入元素

    在我们已经创建好的Java数组里面插入元素. 我们自定义任意一个数组,使用sort()方法对数组进行排序,使用insertElement()方法向数组插入元素,我们还定义了一个printArray() ...

  2. Java_数组(声明、创建、初始化、复制、增强型for循环、二维数组、排序、Arrays类)

    Java_数组 数组的基本概念 声明数组 创建数组 初始化数组 方法一:分配空间与赋值分步进行 方法二:分配空间,同时赋值 增强型for循环 复制数组 二维数组 排序 Arrays类 copyOfRa ...

  3. java数组 插入,Java数组添加元素

    本篇文章帮大家学习java数组添加元素,包含了Java数组添加元素使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 以下实例演示了如何使用sort()方法对Java数组进行 ...

  4. php 插入2个数组,用PHP将2个数组插入mysql

    我有2个数组形式 $n = 0; $c = 0; echo ""; do{ if($c>10){$n="";} echo "".$n. ...

  5. java一维数组插入元素_Java 数组 之 一维数组 追加 元素

    /** 数组分类 1. 一维数组 1.1 一维数组的定义和初始化 1.2 对一维数组的操作, 遍历,添加,插入,修改,删除,排序,查找 2. 二维数组 2.1 二维数组的定义和初始化 2.2 二维数组 ...

  6. php数组插入mysql,php mysql:将一个php数组插入mysql

    我有一个包含30000个条目的数组,需要进入MySQL表. 什么是最佳做法?从这里?让我们说数据库中的[0],[1]和[2]将是'title','type'和'customer' 它是否添加了与表中列 ...

  7. c定义一个整型数组_滨州学院C语言作业讲解有序数组插入

    点击蓝字 关注我们 + 滨州学院C语言作业详解 [问题描述]一个长度为11的整型数组中存放有10个从小到大排好序的整数:1 3 5 10 23 100 180 200 350 500.输入一个x,把它 ...

  8. js中数组插入、删除元素操作

    /** 删除数组元素:Array.removeArr(index)*/Array.prototype.removeArr = function (index) {if (isNaN(index) || ...

  9. C语言函数(有序数组插入)

    已有一个已排好(从小到大)的n个元素的整形数组,输入一个整数数,要求按原来排序的规律将它插入数组中. #include<stdio.h> #define N 100 void insert ...

最新文章

  1. 如何给女朋友解释什么是“元宇宙”?
  2. 参数签名ascii码排序的坑
  3. 什么是m叉树_国考临近考试了,感觉已经没有进步空间了,最后关头还有没有什么提成成绩的好方法?...
  4. Class文件结构(更新中)
  5. UIWebView UITextView
  6. php 继承多个接口,PHP接口多继承及tarits实现多继承效果的方法
  7. 数据库联结使用及分类
  8. 原始数据格式无法识别_虹膜识别技术优势明显 为何难以开启“刷眼“时代
  9. (翻译)《介绍 GENEVA Beta 1 白皮书》(3)
  10. 日语输入法电脑版_哪个日语输入法比较好用,日语输入法下载及使用教程
  11. rabbitmq 发送的用户名是什么
  12. resnet的演化(res2net,resnext,se-resnet,sk-resnet,resnest)
  13. 小伙子自学C++编程简单DIY,即让你拥有一个屏幕画笔,非常实用!
  14. Teechart图表应用技术详解—第四章之工具组件概述
  15. 求解顺序统计量的7种方法
  16. 市面上最流行的九大现场总线
  17. 爬取NBA球员生涯数据,并在Excel中可视化显示
  18. java swing组件_Java -- Swing 组件使用
  19. 使用VB.Net操作Excel输出重复内容的表格
  20. 微信扫码支付notify_url回调接收通知问题

热门文章

  1. 解决outlook无法启动
  2. 教你50招提升ASP.NET性能(二十六):对于开发人员的数据库性能技巧
  3. 编写一个Rubygem, 如何在gem 被Install之前运行一段程序?
  4. Springboot01创建第一个程序
  5. Android中TextView的使用详情综述
  6. Android CardView的基本使用
  7. Android对Bitmap的内存优化
  8. Mr.J-- HTTP学习笔记(七)-- 缓存
  9. 音频编码:ADPCM
  10. Python基础——1基础