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("---------------------");
}
}