java_数组插入001

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

时间: 2024-08-30 09:29:26

java_数组插入001的相关文章

关于数组插入问题

这里是个String类 数组插入问题 一般这种代码的  步骤为 //插入并排序 : 01 赋值,02 数组类的排序 03 声明一个比旧的长度多1的新数组,04 把旧的依次赋值到新的中//核心: 05 找位置,记录下标 06 依次向后腾开位置 07插入 08 遍历新数组

在排序好的数组插入一个数字,数字要插入到合适的位置上

最近在看以前大一看过的一本书<JAVA开发实战经典>李兴华写的,每看一次以前看过的书,收获都是不一样的,很多东西以前不明白,现在一看恍然大悟的感觉: 这道题目是书上的习题,没给参考答案,我在网上也没找到好点的,就发上来,感觉这个算法还可以优化得更好,希望高手指点 // 在排序好的数组插入一个数字,数字要插入到合适的位置上 int intArr[] = { 11, 22,33, 44, 55, 66, 77}; int insertNum = 34; //找到要插入的位置 int insertI

javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除splice(需明确位置) 9.数组遍历 10.jQuery根据元素值删除数组元素的方法 数组常见操作包含了 增.删.查.改.插入.交集.并集 1.数组整体元素修改 //map,给数组每个元素加1 输出[1,2,3] $.map([0,1,2],function(n){ return n+1; })

JAVA数组插入数值

将一个数值插入JAVA数组,并排序. import java.util.Scanner; public class xr{ public static void main(String[] args){ int[] arr={14,24,35,48,69}; Scanner in=new Scanner(System.in); System.out.println("请输入一个要插入的值"); int a=in.nextInt(); arr[arr.length-1]=a; for(i

【面试题】向一个长度为100的int数组,插入1-100的随机数,不能重复

1 public int[] GetNoRepeatArrayy(int arrLength) 2 { 3 int[] array = new int[arrLength]; 4 IList<int> list = new List<int>(); 5 //准备不重复的数据 6 for (int i = 0; i < array.Length; i++) 7 { 8 list.Add(i); 9 } 10 //将不重复的数据随机插入到数组中 11 for (int j = (

php数组插入数据库这个功能该怎么实现

原文网址:https://segmentfault.com/q/1010000004048449 比如一个数组$a=array("a"=>"1","b"=>"2","c"=>"3");现在想执行数据库插入语句insert into admin(a,b,c) values(1,2,3);该怎么实现? 1. $keys; $value; $keys = implode(&q

面试题:一个数组插入另一个数组固定的位置

arr1 = ['a', 'b', 'c']arr2 = ['1', '2', '3'] 把数组arr2插入数组arr1的第二个元素b后面: 思路: 插入特定的位置,我们首先会想到splice,但是又不能直接splice(2, 0, arr2),这样的结果:['a', 'b', ['1', '2', '3'], 'c']: 那我们怎么能把arr2的元素一个一个的splice到arr1中呢,有没有简单的方式呢? 答案是肯定,又一个神奇的函数call.apply,(调用一个函数的方法用在另一个函数上

向数组插入元素

import java.util.Arrays;import java.util.Scanner; public class Demo03 { public static void main(String[] args) {  //想数组中插入元素  //声明一个旧数组  int[] nums=new int[5];  Scanner input=new Scanner(System.in);  //从控制台输入5个数  System.out.println("输入5个数:");  f

c - 向一个排序好的数组插入一个数,插入后数组依然是排序好的

概述 因为这里只是演示插入1个数,这里我不用malloc再重新分配,而是将原先数组的腾出一个占位符. 完整代码如下: 1 #include <stdio.h> 2 3 #define LEN 6 //数组的长度. 4 5 /* 6 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 7 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置. 8 */ 9 10 //返回即将插入到数组中的下标. 11 int 1