type
status
date
slug
summary
tags
category
icon
password
Property
Nov 3, 2022 02:18 AM
五一老师布置的Java作业时用一个二维数组记录学生成绩并对这个数组依据成绩进行排序。
我做了两种方法,各有优缺点。
冒泡法排序
简便,计算速度还快。
二维变一维
大概原理是用另一个一维数组把原来的数组中的学生成绩单独抠出来进行排序,再根据排序的数字找到原本的学生学号。
刚刚写完的时候我自己都觉得自己写了个什么玩意儿?(+_+)?
缺点很多,首先太长,其次会破坏原数组,除非一开始再拿个别的数组接住。
但是自己写出来的东西肯定要看看有什么优点嘛。(ಥ _ ಥ)
我想到了运行速度,然后用System.currentTimeMillis方法比较两个程序的运行速度,一开始运行40个人的程序,两者都是0毫秒。
自己不死心继续增加人数,然后绘制了一个表格:
| 人数 | 40 |400 | 4000 |10000 |40000 | 100000 |
|--|--|--|--|--|--|--|--|--|
| 冒泡法耗时(ms) | 0 | 9 | 68 |474| 10613| 69993 |
|变维法耗时(ms)|0|29|124|463|4471|26950|
然后发现自己的程序竟然在数字很大的情况下速度更快!
虽然不知道是什么原理(〃` 3′〃)
人数 | 40 | 400 | 4000 | 10000 | 40000 | 100000 |
冒泡法耗时(ms) | 0 | 9 | 68 | 474 | 10613 | 69993 |
变维法耗时(ms) | 0 | 29 | 124 | 463 | 4471 | 26950 |