爪哇国新游记之二十七

编程入门 行业动态 更新时间:2024-10-10 00:24:48

<a href=https://www.elefans.com/category/jswz/34/1719777.html style=爪哇国新游记之二十七"/>

爪哇国新游记之二十七

代码:

import java.util.ArrayList;
import java.util.List;public class Bit {int max;int min;int[] arr;public Bit(int[] arrInput) {// 找出极值for (int i = 0; i < arrInput.length; i++) {if (max < arrInput[i]) {max = arrInput[i];}if (min > arrInput[i]) {min = arrInput[i];}}// 新建数组arr = new int[max - min + 1];// 数组插值for (int i : arrInput) {int index = i - min;arr[index]++;}}public boolean hasDuplicateItem() {for (int i = 0; i < arr.length; i++) {int value = arr[i];if (value > 1) {return true;}}return false;}public List<Integer> getSortedList() {List<Integer> ls = new ArrayList<Integer>();for (int i = 0; i < arr.length; i++) {int value = arr[i];if (value != 0) {for (int j = 0; j < value; j++) {ls.add(min + i);}}}return ls;}public List<Integer> getUniqueSortedList() {List<Integer> ls = new ArrayList<Integer>();for (int i = 0; i < arr.length; i++) {int value = arr[i];if (value != 0) {ls.add(min + i);}}return ls;}public int[] getUniqueSortedArray(){List<Integer> ls=getUniqueSortedList();int[] arr=new int[ls.size()];for(int i=0;i<arr.length;i++){arr[i]=ls.get(i);}return arr;}/*** 二分查找* * @param sortedArray*            已排序的欲查找的数组* @param seachValue*            查找的值* @return 找到的元素下标,若找不到则返回-1*/public static int binSearch(int[] sortedArray, int seachValue) {// 左边界int leftBound = 0;// 右边界int rightBound = sortedArray.length - 1;// 当前下标位置int curr;while (true) {// 定位在左边界和右边界中间curr = (leftBound + rightBound) / 2;if (sortedArray[curr] == seachValue) {// 找到值return curr;} else if (leftBound > rightBound) {// 左边界大于右边界,已经找不到值return -1;} else {if (sortedArray[curr] < seachValue) {// 当当前下标对应的值小于查找的值时,缩短左边界leftBound = curr + 1;} else {// 当当前下标对应的值大于查找的值时,缩短右边界rightBound = curr - 1;}}}}public static void main(String[] args) {int[] arr = { -2, -1, 3, 5, 7, 9, 30, 4, -2, 5, 8, 3 };Bit b = new Bit(arr);System.out.println("排序后数组");int[] arr2=b.getUniqueSortedArray();for(int i=0;i<arr2.length;i++){System.out.println(i+":"+arr2[i]);}int[] arr3={2,5,7,-2,90};for(int i=0;i<arr3.length;i++){int index=Bit.binSearch(arr2, arr3[i]);if(index!=-1){System.out.println(arr3[i]+"排在数组arr2的第"+index+"个");}else{System.out.println(arr3[i]+"不在数组arr2中");}}}
}

输出:

排序后数组
0:-2
1:-1
2:3
3:4
4:5
5:7
6:8
7:9
8:30
2不在数组arr2中
5排在数组arr2的第4个
7排在数组arr2的第5个
-2排在数组arr2的第0个
90不在数组arr2中

 













本文转自张昺华-sky博客园博客,原文链接:.html,如需转载请自行联系原作者


更多推荐

爪哇国新游记之二十七

本文发布于:2024-03-08 03:58:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爪哇   二十七   游记

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!