package com.giveu.product.utils;
public class Slotion {
public static void main(String[] args) {
// int[] arr1 = { 0, 1, 2, 6, 8, 9 };
// System.out.println(erfen(arr1, 9));
// int[] arr2 = { 4, 3, 1, 2 };
// maopao(arr2);
// int[] arr3 = { 4, 3, 1, 2 };
// xuanze(arr3);
}
/**
* 二分查找
* @param arr 有序数组
* @param a 待查找元素
* @return 待查找元素所在位置
*/
static int erfen(int[] arr, int a) {
int right = arr.length - 1;// 右下标
int left = 0;// 左下标
while (left <= right) {
int mid = (left + right) / 2;// 中间下标
if (a == arr[mid]) {
return mid + 1;// 返回序数
} else if (a < arr[mid]) {
right = mid - 1;// 向左查找,右下标=中间下标-1
} else {
left = mid + 1;// 向右查找,左下标=中间下标+1
}
}
return -1;// 未找到
}
/**
* 冒泡排序
* @param arr 待排序数组
* @return
*/
static int[] maopao(int[] arr) {
int length = arr.length;
int temp;
for (int i = 0; i < length - 1; i++) {
// 每次都从下标0开始两两相邻作比较,每循环完一次就把最大的数遍历到最右的位置,
// 所以j的最大循环位置是在一次次往左移,所以j < length-i -1,
// i的作用是每次j循环的右边界
for (int j = 0; j < length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
for (int a : arr) {
System.out.print(a);
}
System.out.println();
}
}
return arr;
}
static int[] xuanze(int[] arr) {
int length = arr.length;
int temp;
for (int i = 0; i < length; i++) {
for (int j = i+1; j < length; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
for (int a : arr) {
System.out.print(a);
}
System.out.println();
}
}
return arr;
}
}