首页 > 编程语言 > 详细

最近正在理解java的一些基础算法的东西

时间:2020-08-11 10:31:34      阅读:64      评论:0      收藏:0      [点我收藏+]

我会经常更新一些自己学习过程中写的东西,建议多dbg观察一下数据每次循环的变化,这样才能加深理解。好好学习!

      


public class TestMath {
public static void main(String[] args) {
int arry[] = {12, 43, 12, 65, 12, 65, 12, 88, 3, 98, 1};
// System.out.println(binserch(arry,20));
maopao(arry);
}


/**
* 二分搜索(折半查找)
* 思想:将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,
* 如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。
* 条件:数组必须有序
* 优点:查找效率高
* 缺点:元素必须有序且插入删除困难
* 适用场景: 折半查找方法适用于不经常变动而查找频繁的有序列表。
*/
public static int binserch(int[] arr, int key) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (right + left) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else if (arr[mid] > key) {
right = mid - 1;
}
}
return -1;
}


/**
* 冒泡排序
*
* @param arr
* @return
*/

public static int[] maopao(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
//这里吧参数提出来方便dug观察每次循环的参数变化
int arrj = arr[j];
int arrj1 = arr[j + 1];
//这里为正序排序
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
int s = arr[j];
arr[j] = temp;
}
}
}
//打印出来
for (int as : arr) {
System.out.println(as);
}
return arr;
}


}

最近正在理解java的一些基础算法的东西

原文:https://www.cnblogs.com/achao6/p/13473881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!