
Java.数组算法
发布日期:2021-05-07 02:46:22
浏览次数:20
分类:原创文章
本文共 2718 字,大约阅读时间需要 9 分钟。
Java.数组算法
一、冒泡排序算法:
- 3 1 6 2 5
- 经过算法后:1 2 3 5 6
、 - 第一次:
- 1 3 6 2 5
- 1 3 6 2 5
- 1 3 2 6 5
- 1 3 2 5 6
- 第二次
- 1 3 2 5
- 1 2 3 5
- 1 2 3 5
- 第三次
- 1 3 2
- 1 2 3
- 第四次
- 1 2
冒泡排序算法就是通过相邻的两个数的比较大小后,依次转换位置,首先确定出最大的数。从后往前依次得出。
package 数组算法;public class bubbleSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //创建数组 int[] a = new int[]{ 3,1,6,2,5}; //开始冒泡排序 //外层控制循环排序次数 for(int i = a.length-1;i>0;i--){ //内层循环控制每次排序 for(int j = 0; j<i; j++){ if(a[j]>a[j+1]){ int temp; temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } //遍历数组 for(int i = 0;i<a.length;i++){ System.out.print(a[i]+" "); } }}结果:1 2 3 5 6
二、选择排序算法:
选择排序即为从数组中选出最小的数与第一个位置的数进行交换。从前往后依次得出。(与冒泡排序相反)
package 数组算法;public class selectSort { public static void main(String[] args) { // 创建数组 int[] a = new int[] { 3, 1, 6, 2, 5 }; // 选择排序 for (int i = 0; i < a.length - 1; i++) { // 假设第一个元素最小 int min = i; for (int j = i + 1; j < a.length; j++) { if (a[min] > a[j]) min = j; } //交换位置 if (min != i) { int temp; temp = a[i]; a[i] = a[min]; a[min] = temp; } } //遍历数组 for(int i=0;i<a.length;i++){ System.out.println(a[i]); } }}结果:12356
三、二分法:
数学上的二分法:
二分法是指对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。
相比于数学的二分法,我们这里的区间是在一个数组内,零点结尾要查找的数
二分法查找:
-
1.二分法是建立在已经排好序的基础上
-
2.以下示例是从小到大的排序方式排好的
-
3.在这个数组中没有重复的数
-
例如数组: 1 3 5 9 11 13 56
-
int begin = 0;
-
int end = 6;
-
int mid = 3;
中间元素是9,9<13
-
begin = mid+1;
-
end = 6;
-
mid = 5;
中间元素是13. 13==13
*/
public class MyArray { private static int binarySearch(int[] a, int destElement) { int begin = 0; int end = a.length - 1; while (begin <= end) { int mid = (begin + end) / 2; 分三类情况: 1.当数组内中间数等于要查询的数 if (a[mid] == destElement) { return mid; 2.当数组的中间数大于要查询的数 } else if (a[mid] > destElement) { end = mid - 1; 3.当数组中的数小于要查询的数 } else if (a[mid] < destElement) { begin = mid + 1; } } return -1; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[] { 1, 3, 4, 5, 7, 8, 9, 10, 23, 25 }; int destElement = 10; // 要求从这个数组里查找10元素的下标 int index = binarySearch(a, destElement); System.out.println((index == -1) ? destElement + "元素不存在!" : destElement + "在数组中的下标是:" + index) }}结果:10在数组中的下标是:7
若查询的数不在数组中:
int[] a = new int[] { 1, 3, 4, 5, 7, 8, 9, 10, 23, 25 }; int destElement = 100; // 要求从这个数组里查找10元素的下标 int index = binarySearch(a, destElement); System.out.println((index == -1) ? destElement + "元素不存在!" : destElement + "在数组中的下标是:" + index); }结果:100元素不存在!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月26日 16时27分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于单片机可控音乐流水灯控制设计-全套资料
2021-05-08
基于单片机简易信号误差分析设计-全套资料
2021-05-08
基于单片机简易洗衣机系统仿真设计-全套资料
2021-05-08
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2021-05-08
基于单片机八层电梯系统控制设计-毕设课设资料
2021-05-08
并发框架下的“基础类型”——浅析基本类型、ThreadLocal、原子类的线程安全机制
2021-05-08
Android Studio同步Gradle失败的解决办法
2021-05-08
VHDL代码风格
2021-05-08
C++系列7:回调函数
2021-05-08
图像处理系列1.skimage
2021-05-08
好用的拼图小程序,图作妖
2021-05-08
读取二进制存储信息,将低位二进制存储转换为高位存储
2021-05-08
Hibernate操作Blob,将Blob转换为String
2021-05-08
Object Clone
2021-05-08
Javascript中String支持使用正则表达式的四种方法
2021-05-08
2021年判断浏览器最新写法,你都掌握了吗?
2021-05-08
简易版Http请求工具
2021-05-08
【法律】如何保障企业的合法权益:保密协议模板
2021-05-08
【IoT】 产品设计之结构设计:PMMA(亚克力)板、PC耐力板、PS有机板与MS板区别
2021-05-08