/*
* 数组排序:冒泡排序,选择排序
* 自动排序:sort();
*
* 查找数组中的某个值:(一般返回 下标)
* 1、遍历整个数组
* 2、二分法(min、mid、max);(必须先排序)
* 自动二分法查找:binarySearche();(必须先排序)
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int [] arr = {2,5,8,4,3,6,9,1};
MaoPaoList(arr);
System.out.println(Arrays.toString(arr));
int [] arr1 = {2,5,8,4,3,6,9,1};
ChooseList(arr1);
System.out.println(Arrays.toString(arr1));
int [] arr2 = {2,5,8,4,3,6,9,1};
getArrays(arr2,4);
getArrays(arr2,10);
int [] arr3 = {2,5,8,4,3,6,9,1};
int dic = dichotomy(arr2,4);
System.out.println(dic);
int dic1 = dichotomy(arr2,10);
System.out.println(dic1);
}
//封装冒泡排序(大到小)
public static void MaoPaoList(int [] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//封装选择排序(大到小)
public static void ChooseList(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]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//封装遍历数组查找某个值
public static void getArrays(int [] arr,int value){
int orderNumber = 0;
for(int i=0;i<arr.length;i++){
if(arr[i] == value){
orderNumber = i;
System.out.println(orderNumber);
break;
}
if(i==arr.length-1 && arr[arr.length-1]!=value){
System.out.println("查无此数据!");
}
}
}
//封装二分法查找某个值
public static int dichotomy(int [] arr,int value){
Arrays.sort(arr);
int max = arr.length-1;
int mid = arr.length/2;
int min = 0;
while(arr[mid] != value){
if(arr[mid] > value){
max = mid - 1;
}else if(arr[mid] < value){
min = mid + 1;
}
if(min>max){
return -1;
}
mid = (max+min)/2;
}
return mid;
}
}