//数组排序 public class Test02 { public static void main(String[] args) { int[] array = new int[]{22,5,44,87,6,33,65,9,54,12,38,41}; //冒泡排序 两个元素比较大小 把大的交换到后面 for (int i = 0; i < array.length - 1; i++) { //需要比较length - 1轮 for (int j = 0; j < array.length - 1 - i; j++) { if(array[j + 1] < array[j] ){ int t = array[j + 1]; array[j + 1] = array[j]; array[j] = t; } } } printArr(array); //乱序 for (int i = 0; i < array.length - 1; i++) { int a = (int) (Math.random() * array.length); int t = array[i]; array[i] = array[a]; array[a] = t; } printArr(array); //逆序 for (int i = 0; i < array.length / 2; i++) { int t = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 -i] = t; } //逆序 int mn = 0; int max = array.length - 1; while (mn < max){ int t = array[mn]; array[mn] = array[max]; array[max] = t; mn ++; max --; } printArr(array); //选择排序 就是在数组中选择最小的元素 交换到最前面 for (int i = 0; i < array.length - 1; i++) { int min = i; //假设一个最小索引值 for (int j = min + 1; j < array.length ; j++) { if(array[min] > array[j]){ min = j; } } if(min != i){ int t = array[i]; array[i] = array[min]; array[min] = t; }} printArr(array); //定义方法实现二分查找 System.out.println(binarySearch(array,87)); } public static int binarySearch(int[] array, int key){ int begin = 0; //起始索引值 int end = array.length - 1; //结束索引值 int mid = (begin + end) / 2; //中间索引值 while (begin <= end){ if(key == array[mid]){ return mid; }else if(key > array[mid]){ //key大于array[mid]就去右半边找,改变开始索引值 begin = mid + 1; mid = (begin + end) / 2; }else { //key小于array[mid]就去左半边找,改变结束索引值 end = mid - 1; mid = (begin + end) / 2; } } return -1; //返回-1说明不存在 } private static void printArr(int[] array) { for (int arr : array) { System.out.print(arr + " "); } System.out.println(); } }
Array数组排序
最新推荐文章于 2023-12-07 20:56:52 发布