Java编程:数组操作技巧

   日期:2024-12-26    作者:zslhmj 移动:http://3jjewl.riyuangf.com/mobile/quote/54232.html

目录

1,数组排序

方法一:调用Arrays工具类的sort()方法对数组进行排序

方法二:冒泡排序

2,数组查找

方法一:通过使用Arrays工具类的binarySearch()方法

方法二:二分查找(进行二分查找的数组必须是有序的

方法三:双指针查找 

方法四:遍历查找

3,数组乱序

4,数组旋转

向左旋转(顺序旋转

 向右旋转(逆序旋转

方法一:调用Arrays工具类的sort()方法对数组进行排序

 

方法二:冒泡排序

冒泡排序私对一个数组进行从小到大的排序。

步骤

1、比较相邻的元素,如果第一个比第二个大,就交换位置。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个元素。

特点:每一轮循环后,最大的一个数被交换到末尾,因此,下一轮循环就可以“排除”最后的数,每一轮循环都比上一轮循环的结束位置靠前一位。

注意

N个数字来排序
俩俩比较小靠前
总共比较N-1轮
每轮比较N-1-i次

 

 优化后代码:每进行一次排序,都判断一下数组是否已经有序,如果有序则不用在进行排序。

 
 

方法一:通过使用Arrays工具类的binarySearch()方法

(注意:进行查找的数组必须是有序数组

如果数组无序,首先需要对数组进行排序操作

 

方法二:二分查找进行二分查找的数组必须是有序的

二分查找算法思想

1,判断搜索数组的“中位元素”与要查找的“目标元素”是否相等。
        如果相等,代表查找成功,退出算法
        如果不相等,继续比较“中位元素”与要查找的“目标元素”的大小关系
        如果“中位元素”大于“目标元素”,当前数组的前半部分作为新的搜索数组,因为后半部分的所有元素都大于“目标元素”,它们全都被排除了。
        如果“中位元素”小于“目标元素”,当前数组的后半部分作为新的搜索数组,因为前半部分的所有元素都小于“目标元素”,它们全都被排除了。
2、在新的搜索数组上,重新开始第1步的工作。

 

方法三:双指针查找 

通过两个下标,分别从数组头部和尾部,同时对该无序数组进行遍历,将数组中的每个元素与指定元素进行比较,从而确定该数组中是否存在指定元素。

 

方法四:遍历查找

可以通过对该数组进行遍历,将数组中的每个元素与指定元素进行比较,从而确定该数组中是否存在指定元素。

 
 

数组乱序,也被称为数组洗牌,实现算法中有一个非常著名的洗牌算法Fisher-Yates算法,是由 Ronald A.Fisher和Frank Yates于1938年发明的,后来被Knuth在自己的著作《The Art of Computer Programming》中介绍,很多人直接称Knuth洗牌算法。

 实现步骤

1,假设有一组需要乱序的数组arr。
2,从arr中随机选取一个未乱序的元素。
3,将该元素与数组arr中最后一个未乱序的元素交换。
4,重复2-3的步骤,直到数组arr中元素全部完成乱序。

 
 

向左旋转(顺序旋转

将头元素和他后边的元素交换位置

 

 向右旋转(逆序旋转

尾元素后他的前一个元素交换位置


 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号