1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java的Arrays类常用方法#冒泡排序#二分查找法#数组转换集合

Java的Arrays类常用方法#冒泡排序#二分查找法#数组转换集合

时间:2023-08-16 13:34:09

相关推荐

Java的Arrays类常用方法#冒泡排序#二分查找法#数组转换集合

数组高级冒泡排序

方法一:(冒泡排序)

/** 冒泡排序* 1,返回值类型,void* 2,参数列表,int[] arr* * 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次第四次:arr[0]与arr[1]比较1次*/public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length -1 ; i++) { //外层循环决定循环几次for (int j = 0; j < arr.length - 1 - i; j++) { //-1为了防止索引越界,-i为了提高效率if (arr[j] > arr[j + 1]) {swap(arr,j,j+1);}}}}

方法二:(选择排序)

/** 选择排序* 1,返回值类型void* 2,参数列表int[] arr* * 第一次:arr[0]分别与arr[1-4]比较,比较4次第二次:arr[1]分别与arr[2-4]比较,比较3次第三次:arr[2]分别与arr[3-4]比较,比较2次第四次:arr[3]与arr[4]比较,比较1次*/public static void selectSort(int[] arr){for (int i = 0; i < arr.length -1; i++) {for (int j = i+1; j < arr.length; j++) {if (arr[i] > arr[j]){swap(arr,i,j);}}}}

上面用到的swap方法:

/** 换位操作* 1,返回值类型,void* 2,参数列表int[] arr,int i,int j* * 如果某个方法,只针对本类使用,不想让其他类使用就可以定义成私有的*/public static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}

主方法引用

public static void main(String[] args) {int[] arr = {21, 11, 88, 44, 23};//bubbleSort(arr);selectSort(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}

数组高级二分查找法

前提

数组必须为有序的,否则输入结果没有意义

public static int getIndex(int[] arr,int value){int min = 0;int max = arr.length -1;int mid = (min + max)/2;while (arr[mid] != value){ //当中间值不等于要找的值,就开始循环查找if (arr[mid] > value){max = max - 1;}else if (arr[mid] < value){min = min + 1;}mid = (min + max)/2;if (min > max){ //如果最小索引大于了最大索引,表示在数组里不存在该值 返回-1return -1;}}return mid;}

主方法引用

public static void main(String[] args) {int[] arr1 = {11, 22, 33, 44, 55, 66};System.out.println(getIndex(arr1, 33));}

Arrays类中封装的排序方法——sort

int[] arr2 = {22,66,11,33,55,44};System.out.println(Arrays.toString(arr2));//数组转字符串Arrays.sort(arr2); //排序System.out.println(Arrays.toString(arr2));

Arrays类中封装的获取元素索引的方法——binarySearch

int[] arr3 = {11,22,33,44,55,66};System.out.println(Arrays.binarySearch(arr3,22));System.out.println(Arrays.binarySearch(arr3,21));//没有元素时,取插入点负值-1

数组转换成集合——asList

#数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用集合中的方法

public static void HasList() {int[] arr4 = {11,22,33,44,55};//基本数据类型的数组转换成集合,会将整个数组当作一个对象转换List<int[]> list = Arrays.asList(arr4);System.out.println(list);Integer[] arr5 = {11,22,33,44,55};//将数组转换成集合,数组必须是引用数据类型List<Integer> lsit1 = Arrays.asList(arr5);System.out.println(lsit1);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。