本文主要是介绍学习JAVA的第十二天(基础),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述
解决问题的策略
机制。
查找算法
基本查找(顺序查找)
关键:
从0索引开始依次向后查找
方法:
public static boolean basicSearch(int[] arr,int number) {//基本查找 遍历数组查找所需结果for (int i = 0; i < arr.length; i++) {if(number == arr[i]){return true;}}return false;}}
二分查找(折半查找)
关键:
数组中的数据是有序的
每次排除一半的查找范围,节省查找次数
方法:
public static int BinarySearch(int[] arr,int number) {//定义变量确定查找范围 最小肯定是0索引的int min = 0;//最大的索引是数组长度-1int max = arr.length-1;//开始循环查找数据,利用while循环,查找出索引直接返回结果while(true){if(min > max){//返回-1,调用时可以将-1与0作比较,得出数据索引是否存在return -1;}//中间位置int mid = (min + max) / 2;//arr[mid]>numberif(arr[mid]>number){max = mid - 1;}//arr[mid]<numberelse if(arr[mid]<number){min = mid + 1;}else{return mid;}}}
分块查找
关键:
块内无序,块间有序。
一般分块是按照数组长度的开根号
具体问题,具体分析
方法:
//判断number在哪个块中private static int findIndexBlock(Block[] bArr,int number){//循环判断number在哪个块中for (int i = 0; i < bArr.length; i++) {if(number <= bArr[i].getMax()){return i;}}return -1;}
//利用分块查找获取索引private static int getIndex(Block[] bArr,int[] arr,int number){int indexBlock = findIndexBlock(bArr,number);//数据不在数组中if(indexBlock == -1){return -1;}//数据在数组中 刚才获取了数据所属块的索引int startIndex = bArr[indexBlock].getStartIndex();int endIndex = bArr[indexBlock].getEndIndex();//遍历for (int i = startIndex; i <= endIndex; i++) {if(arr[i] == number){return i;}}return -1;}
排序算法
冒泡排序
关键:
将相邻的数据进行比较,小的放前面,大的放后面。
方法:
for(int i = 0; i < arr.length - 1; i++){for (int j = 0; j < arr.length - 1-i; j++) {if (arr[j] > arr[j + 1]) {int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
这篇关于学习JAVA的第十二天(基础)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!