前言:
当前同学们对“二分法实现数组排序”大概比较注重,同学们都需要了解一些“二分法实现数组排序”的相关文章。那么小编也在网上网罗了一些关于“二分法实现数组排序””的相关资讯,希望咱们能喜欢,你们快快来了解一下吧!1.1. 排序操作(掌握原理)
需求:完成对int[] arr = new int[]{2,9,6,7,4,1}数组元素的升序排序操作.
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基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。
标签: #二分法实现数组排序 #交换法排序数组 #用java编写数组升序排序程序 #java数组升序排序代码 #java数组升序排序代码是多少