JAVA作业求助

不涉及任何商业性质只是作业不会做而已。老师上课解说又很抽象。... 不涉及任何商业性质 只是作业不会做而已。老师上课解说 又很抽象。 展开
 我来答
不灭归元
2021-12-14
知道答主
回答量:39
采纳率:100%
帮助的人:1.7万
展开全部

做个练习,仅供参考。

代码如下:


package com.hello.algorithm;

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

public class InsertSort {
public static void main(String[] args) {
// 创建一个数组存储成绩,需要指定长度
int[] scores = new int[6]; //假设存储6个成绩:100 99 85 82 63 60

int index = 0;

while(index < scores.length) {
// 控制台接收成绩
System.out.print("请输入成绩(100 99 85 82 63 60):");
Scanner scanner = new Scanner(System.in); // 随机插入成绩
int s = scanner.nextInt();
// 将接收的成绩与数组中的所有成绩进行比较,按照从大到小的规则,找到插入位置,然后插入数组
int insertPos = 0;
int temp = 0;
int temp2 = 0;
// 第一遍遍历数组找到插入位置
for(int i = 0; i < scores.length; i++){
if(s > scores[i]){
insertPos = i;
temp = scores[i];
scores[i] = s;
break;
}
}
// 第二遍遍历从插入位置整体后移
for(int i = 0; i < scores.length; i++){
// 插入位置后面的元素整体后移
if(i > insertPos){
temp2 = scores[i];
scores[i] = temp;
temp = temp2;
}
}
// 打印该成绩的插入位置以及打印整个数组
System.out.println("插入成绩的下标:" + insertPos);
System.out.println(Arrays.toString(scores));

index++;
}
}
}


运行结果如下:


请输入成绩(100 99 85 82 63 60):63

插入成绩的下标:0

[63, 0, 0, 0, 0, 0]

请输入成绩(100 99 85 82 63 60):60

插入成绩的下标:1

[63, 60, 0, 0, 0, 0]

请输入成绩(100 99 85 82 63 60):82

插入成绩的下标:0

[82, 63, 60, 0, 0, 0]

请输入成绩(100 99 85 82 63 60):99

插入成绩的下标:0

[99, 82, 63, 60, 0, 0]

请输入成绩(100 99 85 82 63 60):85

插入成绩的下标:1

[99, 85, 82, 63, 60, 0]

请输入成绩(100 99 85 82 63 60):100

插入成绩的下标:0

[100, 99, 85, 82, 63, 60]


Process finished with exit code 0


ABCCBAABCCBA123
2021-12-14
知道答主
回答量:2
采纳率:0%
帮助的人:797
展开全部
下面的内容 实现了无限循环添加数组数据,并对数据排序,按照排序输出数组数据
package com.yang;

import java.util.Scanner; //导入

public class ArrayDemo01 {

public static int length = 0; //定义数组长度
public static int[] sz1; //定义替换的数组,未规定数组长度
public static void main(String[] args) {

Scanner scanner = new Scanner(System.in); //输入信息
while (true){ //无限循环
System.out.println("请输入新增成绩");
int score = scanner.nextInt(); //将输入的信息记录到score变量中
if(score < 0){ //当输入的分数为负分时,退出程序
System.out.println("您输入的成绩不符合规定,自动退出程序");
break;
}
length++; //每循环一次,数据长度+1
int[] Sz = new int[length]; //定义原始数组长度
if(length == 1){ //如果是第一次插入数据,则直接读取
Sz[0] = score; //直接将输入的数据放入数组中
System.out.println("插入成绩的下标是"+(length - 1));
System.out.println("插入后的成绩信息是:");
System.out.println(Sz[0]);
sz1 = Sz; //将原始数组的数据存放在替换数组中,后期原始数组长度发生变化,要使用替换数组中的数据
}else { //如果是大于一次的输入
for (int i = 0; i < Sz.length - 1; i++) {
Sz[i] = sz1[i];
}
Sz[Sz.length - 1] = score; //将输入的数据存放在数组末尾

//冒泡排序,对数组进行排序
for(int i=0;i<Sz.length-1;i++){//外层循环控制排序趟数
for(int j=0;j<Sz.length-1-i;j++){//内层循环控制每一趟
if(Sz[j]<Sz[j+1]){
int temp=Sz[j];
Sz[j]=Sz[j+1];
Sz[j+1]=temp;
}
}
}

//循环数据中的数据,如果该数与输入的数据相同,则提示下标
for (int i = 0; i < Sz.length; i++) {
if(Sz[i] == score){
System.out.println("插入成绩的下标是"+ i);
break;
}
}

System.out.println("插入后的成绩信息是:");
for (int i = 0; i < Sz.length; i++) {
System.out.print(Sz[i]+" "); //一行输出
}
sz1 = Sz; //将原始数组的数据交给替换数组
System.out.println(); //换行
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是worden
2021-12-14 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:281
采纳率:40%
帮助的人:23.9万
展开全部
创建一个指定大小的新数组
让插入的成绩等于 数组中的第一位
插入第二位时,让第一位等于下一位
每插入两位执行排序方法
插入第三位时,第一位和第二位均往后移一位
这是思路 ,提高财富值奖励我可以直接给你现成代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2021-12-14 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7803万
展开全部
这个可以找网上插入排序的代码。应该比较简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式