专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java入门超经典内部教程-数组排序入门

temp10 2024-10-22 16:57:08 java教程 10 ℃ 0 评论

1.1. 排序操作(掌握原理)

需求:完成对int[] arr = new int[]{2,9,6,7,4,1}数组元素的升序排序操作.

Java入门超经典内部教程-数组排序入门

1.1.1. 冒泡排序原理(掌握原理)

对未排序的各元素从头到尾依次比较相邻两个元素的大小关系,如果前一个元素大于后一个元素则交换位置,经过第一轮比较后可以得到最大值,同理第二轮比较后出现第二大值等。

针对int[] arr = new int[]{ 2, 9, 6, 7, 4, 1 }数组元素做排序操作:

该数组有6个元素,只需要5轮比较。

第1轮比较:需要比较5次,比较完出现最大值。

第2轮比较:需要比较4次,比较完出现第二大值。

第3轮比较:需要比较3次,比较完出现第三大值。

...

可以看出如有N个元素,则需要N-1轮比较,第M轮需要N-M次比较。

交换数组中两个元素的方法

排序代码:

首先我们使用最直白的方式,进行一次排序模拟:

寻找规律,优化上述代码:

1.1.2. Arrays类中的排序方法(会调用)

Arrays类中已经提高了数组排序的方法sort,并且是调优之后的,性能非常优异,在开发中只需要我们直接调用该方法即可即可。

1.2. 二分法查找(掌握原理)

查找数组元素的算法:

  • 线性查找:从头找到尾,性能比较低。
  • 二分法查找(折半查找):前提数组元素是有序的,性能非常优异。

1.2.1. 二分法搜索原理(掌握原理)

猜数字游戏:

电脑随机生成一个[ 1 , 100 ]之间的整数a,等玩家来猜,猜之后,电脑提示出三种结果:你猜的数偏大,偏小和猜中了。此时为了使用最少次数猜中,玩家必定先猜(1+100)/2的商50,如果此时电脑提示猜的偏小了,那就能推断出该随机数在[ 51 , 100 ]之间,此时再猜(51+100)/2的商75,如果电脑提示猜大了,那么该随机数必在[ 51 , 74 ]之间,那么继续猜(51+74)/2的商,如此每次都可以排除剩下结果一半的可能性,直到猜到为止。

代码如下:

1.2.2. Arrays类中的二分法查找方法(会调用)

小结:排序和二分法查找的原理需要掌握,会调用Arrays类中方法完成相关功能。

本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表