写点什么

Java 键盘输入 n 个数进行排序输出

作者:
  • 2022 年 9 月 04 日
    河南
  • 本文字数:1966 字

    阅读完需:约 6 分钟

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 z;        System.out.println("请输入n个需要排序的数:(请以 ,隔开)");        Scanner input=new Scanner(System.in);        String  a=input.nextLine();        String [] p=a.split(",");        int []shu=new int[p.length];
for(int i=0;i<p.length;i++) { shu[i]=Integer.parseInt(p[i]);
} System.out.println("原序列为:"); for(int i=0;i<shu.length;i++) { System.out.printf("%4d",shu[i]); } System.out.printf("\n"); for(int i=1;i<=shu.length;i++) { for(int j=0;j<shu.length-1;j++) { if(shu[j]>shu[j+1]) { z=shu[j+1]; shu[j+1]=shu[j]; shu[j]=z; } } } System.out.println("排序后序列为:"); for(int i=0;i<shu.length;i++) { System.out.printf("%4d",shu[i]); } }}
复制代码



以上就是 java 在键盘输入 n 个数进行排序输出的全部内容,主要还是 java 基础内容,for 循环内容等。

5、补充

1、排序是什么?


  排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。


  学习网站推荐:https://visualgo.net/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");}
复制代码


发布于: 刚刚阅读数: 5
用户头像

关注

在校大三学生一枚 2022.08.02 加入

喜欢学习编程,擅长技术栈JAVA

评论

发布
暂无评论
Java 键盘输入n个数进行排序输出_排序_斯_InfoQ写作社区