请从控制台接收5个数字存入数组中排序后再反序复制到另一个数组中。要求结果是2个数组的数字都有序一个升序一个降序(选择)
1.核心代码
System.out.println("请输入第一个数组排序的选择:1代表升序,2代表降序");
int choice=scanner.nextInt();
if(choice==1){
for (int i = 0; i <numbers.length-1; i++) {
for (int j = 0; j <numbers.length-1-i; j++) {
if(numbers[j]>numbers[j+1]){
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
//数组的反序
for (int i = 0; i <numbers.length; i++) {
numbers01[i]=numbers[numbers.length-1-i];
}
}else if(choice==2){
for (int i = 0; i <numbers.length-1; i++) {
for (int j = 0; j <numbers.length-1-i; j++) {
if(numbers[j]<numbers[j+1]){
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
//数组的反序(对排好顺序的数组进行反序)
for (int i = 0; i <numbers.length; i++) {
numbers01[i]=numbers[numbers.length-1-i];
}
}
2.常见问题点分析
2.1 如何判断原数组排序后是升序还是降序???
解决方案: 建立一个变量choice,用来接收用户的键盘输入的选择.
根据选择(1.代表升序 2.代表降序)进行排序
2.2 新数组如何接收排好顺序的原数组
解决方案:直接从排好序的原数组的最后一个元素起,赋值给新数组的第一个元素
然后按照顺序依次进行赋值即可。(结束条件<=numbers01.length-1)
2.3 升序和降序的原理是什么??(采用冒泡从前往后)
解答: 升序:前者比后者大,就交换一次,
直至遇到比它还大的数字a(从数字a开始一直往后比较)
降序:前者比后者小,就交换一次
直至遇到比它还小的数字a(从数字a开始一直往后比较)
3.运行截图
3.1 输入选择为1即升序
3.2 输入选择为2即降序
4.源代码
import java.util.Scanner;
public class Work02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int[] numbers=new int[5];
int[] numbers01=new int[5];
for (int i = 0; i <numbers.length; i++) {
System.out.println("请输入第"+(i+1)+"个数据");
numbers[i]=scanner.nextInt();
}
System.out.println("未排序的原数组为: ");
for (int temp01:numbers
) {
System.out.print(temp01+"\t");
}
System.out.println("\n请输入第一个数组排序的选择:1代表升序,2代表降序");
int choice=scanner.nextInt();
if(choice==1){
for (int i = 0; i <numbers.length-1; i++) {
for (int j = 0; j <numbers.length-1-i; j++) {
if(numbers[j]>numbers[j+1]){
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
//数组的反序
for (int i = 0; i <numbers.length; i++) {
numbers01[i]=numbers[numbers.length-1-i];
}
}else if(choice==2){
for (int i = 0; i <numbers.length-1; i++) {
for (int j = 0; j <numbers.length-1-i; j++) {
if(numbers[j]<numbers[j+1]){
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
//数组的反序
for (int i = 0; i <numbers.length; i++) {
numbers01[i]=numbers[numbers.length-1-i];
}
}
System.out.println("排序后的数组为:");
for (int temp02:numbers
) {
System.out.print(temp02+"\t");
}
System.out.println("\n排序后再反序的数组为:");
for (int temp03:numbers01
) {
System.out.print(temp03+"\t");
}
}
}