4个回答
展开全部
做个练习,仅供参考。
代码如下:
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
展开全部
下面的内容 实现了无限循环添加数组数据,并对数据排序,按照排序输出数组数据
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(); //换行
}
}
}
}
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(); //换行
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
创建一个指定大小的新数组
让插入的成绩等于 数组中的第一位
插入第二位时,让第一位等于下一位
每插入两位执行排序方法
插入第三位时,第一位和第二位均往后移一位
这是思路 ,提高财富值奖励我可以直接给你现成代码
让插入的成绩等于 数组中的第一位
插入第二位时,让第一位等于下一位
每插入两位执行排序方法
插入第三位时,第一位和第二位均往后移一位
这是思路 ,提高财富值奖励我可以直接给你现成代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个可以找网上插入排序的代码。应该比较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询