数组查询和冒泡排序算法
package com.xxx.xxx; import java.util.Arrays; public class demo10 { /** * 1、数组查询 * 2、冒泡数组排序 * @param args */ public static void main(String[] args) { //1、数组查询 /** * binarySearch(Object a[],Object key) 用的时候要先进行排序,如果没排序,则返回的结果是不确定的 * a 要搜索的数组 * key 要搜索的值 (如果key包含在数组中、则返回搜索值的索引、否则返回-1或“-”【插入点】) */ int arr4[] = new int[]{23,45,44,75,14,45}; //定义数组 Arrays.sort(arr4); //进行排序 int index = Arrays.binarySearch(arr4,14); //搜索 14 的位置,排序后的索引是 0 System.out.println("14的索引位置是:"+index); //输出 //1.1、数组排序2 /** * binarySearch(Object [].a,int fromIndex,int toIndex,Object key) * a 要进行检索的数组 * fromIndex 指定范围的开始处索引(包含) * toIndex 指定范围的结束索引(不包含) * key 要搜索的值 */ String str[] = new String[]{"ab","cd","ef","gh"}; //定义数组 Arrays.sort(str); //进行排序 int index1 = Arrays.binarySearch(str,0,2,"cd"); //搜索 14 的位置,排序后的索引是 0 System.out.println("cd的索引位置是:"+index1); //输出 System.out.println("---------------------"); //2、 数组排序 //2.1、冒泡排序 /** * 0、小数往前放,大数往后放 * 1、冒泡算法是由双层循环实现,其中外层循环用于控制排序轮数,一般为数组的长度-1 * 因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序 * 2、内层循环主要用于对比数组中每个临近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少 */ int[] array = {63,4,24,1,3,15}; //创建数组是乱序的 for(int i=0;i<array.length;i++){ //比较相邻两个元素,较大的往后冒泡 for(int j=0;j<array.length-1;j++){ if(array[j] > array[j+1]){ //if判断 int temp = array[j]; //把第一个元素的值保存在临时变量中 array[j] = array[j+1]; //把第二个元素保存在第一个元素中 array[j+1] = temp; //把临时变量(也就是第一个元素的值)保存在第二个元素中 } } } //遍历数组输出 for(int i : array){ System.out.print(">"+i); } System.out.println("---------------------"); } }