当前位置:网站首页>Advanced Operations on Arrays
Advanced Operations on Arrays
2022-08-02 03:53:00 【cierxiao】
#博学谷IT学习技术支持#
一、二分查找
二分查找概述
查找指定元素在数组中的位置时,以前的方式是通过遍历,逐个获取每个元素,看是否是要查找的元素,这种方式当数组元素较多时,查找的效率很低
二分查找也叫折半查找,每次可以去掉一半的查找范围,从而提高查找的效率
需求
在数组{1,2,3,4,5,6,7,8,9,10}中,查找某个元素的位置
实现步骤
1. 定义两个变量,表示要查找的范围.默认min = 0 ,max = 最大索引
2. 循环查找,但是min <= max
3. 计算出mid的值
4. 判断mid位置的元素是否为要查找的元素,如果是直接返回对应索引
5. 如果要查找的值在mid的左半边,那么min值不变,max = mid -1.继续下次循环查找
6. 如果要查找的值在mid的右半边,那么max值不变,min = mid + 1.继续下次循环查找
7. 当min > max 时,表示要查找的元素在数组中不存在,返回-1.
代码实现
public static void main(String[] args) {
int [] arr = {
1,2,3,4,5,6,7,8,9,10};
int number = 11;
//1,我现在要干嘛? --- 二分查找
//2.我干这件事情需要什么? --- 数组 元素
//3,我干完了,要不要把结果返回调用者 --- 把索引返回给调用者
int index = binarySearchForIndex(arr,number);
System.out.println(index);
}
private static int binarySearchForIndex(int[] arr, int number) {
//1,定义查找的范围
int min = 0;
int max = arr.length - 1;
//2.循环查找 min <= max
while(min <= max){
//3.计算出中间位置 mid
int mid = (min + max) >> 1;
//mid指向的元素 > number
if(arr[mid] > number){
//表示要查找的元素在左边.
max = mid -1;
}else if(arr[mid] < number){
//mid指向的元素 < number
//表示要查找的元素在右边.
min = mid + 1;
}else{
//mid指向的元素 == number
return mid;
}
}
//如果min大于了max就表示元素不存在,返回-1.
return -1;
}
注意事项
有一个前提条件,数组内的元素一定要按照大小顺序排列,如果没有大小顺序,是不能使用二分查找法的
二、 冒泡排序
冒泡排序概述
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序
如果有n个数据进行排序,总共需要比较n-1次
每一次比较完毕,下一次的比较就会少一个数据参与
代码实现
public static void main(String[] args) {
int[] arr = {
3, 5, 2, 1, 4};
//1 2 3 4 5
bubbleSort(arr);
}
private static void bubbleSort(int[] arr) {
//外层循环控制的是次数 比数组的长度少一次.
for (int i = 0; i < arr.length -1; i++) {
//内存循环就是实际循环比较的
//-1 是为了让数组不要越界
//-i 每一轮结束之后,我们就会少比一个数字.
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printArr(arr);
}
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
三、 Arrays
Arrays的常用方法
方法名 | 说明 |
---|---|
public static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |
public static void sort(int[] a) | 按照数字顺序排列指定的数组 |
public static int binarySearch(int[] a, int key) | 利用二分查找返回指定元素的索引 |
示例代码
public static void main(String[] args) {
// public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
// int [] arr = {3,2,4,6,7};
// System.out.println(Arrays.toString(arr));
// public static void sort(int[] a) 按照数字顺序排列指定的数组
// int [] arr = {3,2,4,6,7};
// Arrays.sort(arr);
// System.out.println(Arrays.toString(arr));
// public static int binarySearch(int[] a, int key) 利用二分查找返回指定元素的索引
int [] arr = {
1,2,3,4,5,6,7,8,9,10};
int index = Arrays.binarySearch(arr, 0);
System.out.println(index);
//1,数组必须有序
//2.如果要查找的元素存在,那么返回的是这个元素实际的索引
//3.如果要查找的元素不存在,那么返回的是 (-插入点-1)
//插入点:如果这个元素在数组中,他应该在哪个索引上.
}
工具类设计思想
1. 构造方法用 private 修饰
2. 成员用 public static 修饰
总结
This article mainly introduces the binary search、冒泡排序、Arrays 的格式和用法,以及之间的不同之处,并根据用法逻辑判断出相应的应用情景,更有效率地帮助我们进行开发.
好啦!本篇文章到这里就结束啦!大家好好练习便能运用自如,每一天都要加油呀!!!
🥰 🥰 🥰你的点赞是对我最大的鼓励.🥰 🥰 🥰
🥰 🥰 🥰你的收藏是对我文章的认可.️🥰 🥰 🥰
🥰 🥰 🥰你的关注是对我前进的动力.🥰 🥰 🥰
边栏推荐
猜你喜欢
随机推荐
第一次手撕代码,如何解出全排列问题
正则笔记(1)- 正则表达式字符匹配攻略
SQL classification, DQL (Data Query Language), and corresponding SQL query statement demonstration
TCP communications program
PHP基金会三月新闻公告发布
Baidu positioning js API
PHP8.2 version release administrator and release plan
Query the indexes of all tables in the database and parse them into sql
逍遥多开模拟器ADB驱动连接
区间问题 : 今年暑假不AC
由中序遍历和后序遍历得到前序遍历(树的遍历)
MySql高级 -- 约束
4.14到新公司的一天
使用PHPMailer发送邮件
display,visibility,opacity
Relative and absolute paths
微信小程序云开发如何将页面生成为pdf?
easyswoole 使用redis执行geoRadiusByMember Count无效修复
[sebastian/diff]一个比较两段文本的历史变化扩展库
宝塔邮局邮箱设置成功后能发送不能接收问题处理