Java常见算法
时间:2019-09-17
本文章向大家介绍Java常见算法,主要包括Java常见算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
选择排序
代码
//对数组进行 '升序' 排列
private static void sortChoose(int[] arr) {
for (int x = 0; x < arr.length; x++) {
for (int y = x + 1; y < arr.length; y++) {
if (arr[x] > arr[y]) { //控制 升序 or 降序
//临时获取:两个数中的最大值
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
}
原理说明:0索引和后续的索引比较、1索引和后续的索引比较......首次循环,可以得出 最小值 或 最大值。
冒泡排序
代码
//对数组进行 '升序' 排列
private static void sortBubble(int[] arr) {
for (int x = 0; x < arr.length; x++) {
for (int y = 0; y < arr.length - x - 1; y++) {
if (arr[y] > arr[y + 1]) { //控制 升序 or 降序
//临时获取:两个数中的最大值
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
}
原理说明:相邻的两个元素比较,位置互换。首次循环,可以得出 最小值 或 最大值。
二分/折半 查找
代码
//参数arr:有序数组; 参数key:需要查找的元素
private static int binarySearch(int[] arr, int key) {
int index = -1;
//定义三个变量,保存数组的最小、中间、最大的索引
int min = 0, mid = 0, max = arr.length - 1;
//循环的条件:小索引<=大索引
while (min <= max) {
mid = (min + max) / 2;
if (arr[mid] < key) {
min = mid + 1;
} else if (arr[mid] > key) {
max = mid - 1;
} else {
index = mid;
break;
}
}
return index;
}
说明:使用:二分/折半 查找某个元素,若存在-则返回元素在数组里面的索引;若不存在-则返回-1。
特别注意:若需要查找的数组是无序的,切记:不可使用二分/折半查找,更不要数组进行排序(排序会导致数组元素的索引变更)!
原文地址:https://www.cnblogs.com/io1024/p/11532676.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Vue使用uuid-npm快速生成uuid,适用于多种场景
- WPF调用图片或资源(Uri)
- Hexo部署远程仓库(Conding、Gitee、Github)
- Linux下安装nginx
- CSS简笔画logo系列:纯CSS绘制“Adidas” Logo
- Electron + Vue跨平台桌面应用开发实战教程(一)
- java_抽象类、接口、多态的使用
- Electron + Vue跨平台桌面应用开发实战教程(二)
- Oracle参数解析(nls_length_semantics)
- 创建单页
- Electron + Vue跨平台桌面应用开发实战教程(三)
- ES6箭头函数中this指向谁?
- 谈谈HTML中锚点及其使用
- java_数据类型转换、运算符
- JavaScript中字符串运算符是什么?有哪些?