一.java—数组扩展练习
1.封装一个函数 传入数字1 返回 一 数字2 返回 二....
public static char findArray(int index) {
char[] array = new char[] {'一' ,'二','三','四','五'};
return array[index-1];
}
2.封装一个函数 定义一个数组 数组值 分别 3,6,11,22 传入11 查找对应的位置
public static int findIndex(int num, int[] array) {
for (int i = 0; i < array.length; i++) {
if (num == array[i]) {
return i;
}
}
return -1;
}
3.封装函数 让数组元素 反转(将数组中的值 倒过来)
public static void reverse(int[] array) {
for (int i = 0; i < array.length/2 ; i++) {
int num = array[i];
array[i] = array[array.length-1-i];
array[array.length-1-i] = num;
}
System.out.println(Arrays.toString(array));
}
二.冒泡排序,选择排序和折半查找
4.冒泡排序
冒泡排序的核心思想:相邻两个数进行比较 交换位置
public static void main(String[] args){
int[] array = new int[]{3,2,5,1};
for(i = 0;i < array.length-1;i++){
for(j = 0;j < array.length-1-i;j++){
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
5. 选择排序
选择排序核心思想: 选择一个数 依次和后面的数比较 换位
public static void main(String[] args) {
int[] array = new int[] {3,2,1,5};
for (int i = 0; i < array.length-1; i++) {
for (int j = 1+i; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
6.折半查找
public static void main(String[] args) {
int[] array = new int[]{5,6,9,12,18,22};
int min = 0;
int max = array.length - 1;
int mid = (min + max) / 2;
int key = 10;
while (key != array[mid]) {
if (key > array[mid]) {
min = mid +1;
}else if(key < array[mid]) {
max = mid - 1;
}
mid = (min + max) / 2;
if (max < min) {
mid = -1;
break;
}
}
System.out.println("这个数的角标是:" + mid);
}