1、需求分析:
在校大四学生,因为疫情原因集体推迟开学,我正好是班委,需要每天上课需要统计人数,总有一两个人不按时进入网课堂,又由于进入课堂时间有所不同每个人,即使同学们昵称改成了学号加姓名,仍然不能按学号顺序排序。
2、问提描述:
有N个数字,需要进行大小排序。
3、编写代码:
public class Test {public static void main(String[] args) {int [] array = {7,22,38,55,35};int temp;for (int i = 0; i < array.length; i++) {for (int j = i+1; j < array.length; j++) {if (array[i] < array[j]) {temp = array[i];array[i] = array[j];array[j] = temp; // 两个数交换位置}}}for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}}}
此时我只需将在课堂的同学的学号后两位,输入到 int [] array 数组里面即可快速找到没有进入课堂的同学。
好比按有20人,当有这些学号的同学(2,3,5,1,8,4,11,20,15,17,16,14,6)进入课堂时,运行结果如下:
此时,我便可以清晰的看到有18,19,13,12,10,9,7 同学没有到课堂。
4、代码优化:
需求分析:
虽然上面代码已经可以实现,但是我这种喜欢小黑框的爱好者,不希望直接定义个死数组,我希望通过键盘输入与电脑交互式完成需求。
代码如下:
import java.util.Scanner;public class Test1 {public static void main(String[] args){int x;System.out.println("请输入n个需要排序的数:(请以 ,隔开)");Scanner input=new Scanner(System.in);String a = input.nextLine();String [] p = a.split(",");int []arr=new int[p.length];for(int i=0;i<p.length;i++) {arr[i]=Integer.parseInt(p[i]);}//原序列为System.out.println("原序列为:");for(int i=0;i<arr.length;i++) {System.out.printf("%4d",arr[i]);}System.out.printf("\n");for(int i=1;i<=arr.length;i++) {for(int j=0;j<arr.length-1;j++) {if(arr[j]>arr[j+1]) {x=arr[j+1];arr[j+1]=arr[j];arr[j]=x;}}}//排序后序列System.out.println("排序后序列为:");for(int i=0;i<arr.length;i++) {System.out.printf("%4d",arr[i]);}}}
以上就是 java 在键盘输入n个数进行排序输出的全部内容,主要还是 java 基础内容,for循环内容等。
5、补充
1、排序是什么?
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。
学习网站推荐:/zh
2、八大排序算法是:
1、直接插入排序;2、希尔排序;3、简单选择排序;4、堆排序;5、冒泡排序;6、快速排序;7、归并排序;8、桶排序/基数排序。
冒泡排序:时间复杂度O(n^2) 空间复杂度O(1)稳定
归并排序:时间复杂度O(nlogn) 空间复杂度O(nlogn) 稳定
快速排序:时间复杂度O(nlogn) 空间复杂度O(logn) 不稳定
桶排序: 时间复杂度O(n) 空间复杂度O(n) 稳定
简单选择排序:时间复杂度 O(n^2) 空间复杂度O(1)不稳定
直接插入排序:时间复杂度O(n^2) 空间复杂度O(1) 稳定的
希尔排序:时间复杂度O(n^1.3~1.5) 空间复杂度O(1) 不稳定
堆排序:时间复杂度O(nlogn) 空间复杂度O(1) 不稳定
3、示例
冒泡排序:
#include <stdio.h>#define SIZE 8void bubble_sort(int a[], int n){int i, j, temp;for (j = 0;j < n - 1;j++)for (i = 0;i < n - 1 - j;i++){if(a[i] > a[i + 1]){temp = a[i];a[i] = a[i + 1];a[i + 1] = temp;}}}int main(){int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};int i;bubble_sort(number, SIZE);for (i = 0; i < SIZE; i++){printf("%d", number[i]);}printf("\n");}
如果觉得《Java 键盘输入n个数进行排序输出》对你有帮助,请点赞、收藏,并留下你的观点哦!