面向对象A类实验题目:排序

本文章中所提到的题目来源于我的课程作业
如果大家有更好的解法可以在评论区留言

题目名称:排序
要求:编写程序,寻找输入数组按指定顺序排序之后的前几项。输入一个长度不限的整数或者字符串数组,选择排序方式升序或者降序,以及输出项 k,将数组按照指定方式排序,输出前 k 项。

比如:
输入
数组 25, 14, 19, 53, 19, 90, 53, 22, 84, 73 ,8

前 5 项

升序

结果为:
14
19
19
22
25
逆序
结果为:
90
84
73
53
53

1.	package projectA;
2.	import java.util.Scanner;
3.	import java.io.*;
4.	public class Main {
5.	 //主函数
6.	 public static void main(String[] args) {   
7.	
8.	  System.out.println("请在下方输入一个整型数组");
9.	  /*
10.	   通过键盘输入数组
11.	  */
12.	 Scanner sc1=new Scanner(System.in);
13.	 /*
14.	  因为是使用字符串作为中转媒介
15.	  所以用nextline来读取Enter键前的所有的字符 
16.	 */
17.	 String temp1=sc1.nextLine();
18.	 //split方法用来分割输入的字符串
19.	 String[] s=temp1.split(" ");
20.	 //定义一个无限制的数组
21.	 int[] arr=new int[s.length];
22.	 for(int i=0;i<s.length;i++){
23.	//Integer.parseInt的作用是将字符串型数据转为int型数据
24.	  arr[i]=Integer.parseInt(s[i]);
25.	 }
26.	
27.	//输入“升序”或者“倒序”
28.	   System.out.println("请在下方输入倒序或者升序"); 
29.	//从键盘读取数据
30.	 Scanner sc2=new Scanner(System.in);
31.	String str1=sc2.nextLine();
32.	
33.	//临时变量
34.	int temp=0;
35.	//然后在选择结构语句中进行函数调用。
36.	switch(str1) {
37.	case "升序": 
38.	 //冒泡排序升序
39.	 for(int i2 = 0 ;i2< arr.length -1; i2++){
40.	  for(int j = 0; j<arr.length-1-i2; j++){
41.	   if(arr[j]>arr[j+1]){
42.	    temp = arr[j];
43.	    arr[j] = arr[j+1];
44.	    arr[j+1] = temp;
45.	   }
46.	  } 
47.	 } 
48.	break;
49.	case "倒序":
50.	 //冒泡排序倒序
51.	 for(int i2 = 0 ;i2< arr.length -1; i2++){
52.	  for(int j = 0; j<arr.length-1-i2; j++){
53.	   if(arr[j]<arr[j+1]){
54.	    temp = arr[j];
55.	    arr[j] = arr[j+1];
56.	    arr[j+1] = temp;
57.	   }
58.	  } 
59.	 } 
60.	break;
61.	
62.	 }
63.	//从键盘输入将要输出到屏幕上数组的范围(大小) 
64.	System.out.println("请在下方输入数组的显示范围"); 
65.	Scanner sc3=new Scanner(System.in);
66.	String str2=sc3.next();
67.	
68.	//类型转换
69.	int temp3;
70.	temp3 =Integer.parseInt(str2);
71.	
72.	//输出数组到屏幕
73.	System.out.println("数组排序后:");
74.	
75.	for(int i = 0; i<temp3; i++){
76.	
77.	  System.out.print(arr[i]+"\t");
78.	}
79.	
80.	  }
81.	}
/*
题目的要求是先指定输出的范围
再选定是升序输出还是倒序输出
文中的代码和题目的要求恰好相反
不过我认为只要程序最终运行的效果一致就足够了
*/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值