1、使用冒泡排序,实现如下的数组从小到大排序。
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
注:
- 冒泡排序时间复杂度: o ( n 2 ) o(n^2) o(n2)
- 快速排序时间复杂度: o ( n l o g 2 n ) o(nlog_2n) o(nlog2n)
- 还需要知道堆排序和归并排序的思路。
2、如何反转上面的数组。请代码实现
3、复制上面数组,得到一个新的数组
4、使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引。不存在,输出提示信息。
注:
- 一般查找均返回的首个匹配元素值的位置。
程序:
package com.atguigu.test;
import java.util.Arrays;
/*
* 1、使用冒泡排序,实现如下的数组从小到大排序。
* int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
*
* 2、如何反转上面的数组。请代码实现,见EverydayTest1
*
* 3、复制上面数组,得到一个新的数组
*
* 4、使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引。不存在,输出提示信息。
*/
public class EverydayTest {
public static void main(String[] args) {
int[] arr = new int[] { 34, 5, 22, -98, 6, -76, 0, -3 };
//每日一考1
System.out.println("排序前:" + Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后:" + Arrays.toString(arr));
//每日一考2
System.out.println("\n反转前:" + Arrays.toString(arr));
arrReverse(arr);
System.out.println("反转后:" + Arrays.toString(arr));
//每日一考3
int[] arr1 = arrCopy(arr);
System.out.println("\narr:" + Arrays.toString(arr));
System.out.println("arr1:" + Arrays.toString(arr1));
//每日一考4
linSearch(arr,22);
}
//创建于一个用于交换的方法
public static void swap(int[] data,int i,int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
// 创建一个冒泡排序的方法
public static void bubbleSort(int[] data) {
boolean flag = true;
for(int i = 0;i < data.length - 1;i++){
for(int j = 1;j < data.length - i;j++){//这里j应该要取到data.length-1
if (data[j] < data[j-1]){
swap(data,j,j-1);
flag = false;
}
//如果一趟比较下来,没有实行交换,则结束循环
if(flag){
break;
}
}
}
}
//创建一个实现数组反转的方法
public static void arrReverse(int[] data){
for(int i = 0;i < data.length/2;i++){
swap(data,i,data.length - 1 - i);
}
}
//创建一个实现数组复制的方法
public static int[] arrCopy(int[] data){
int[] arr = new int[data.length];
for (int i = 0;i < data.length;i++){
arr[i] = data[i];
}
return arr;
}
//创建一个线性查找的方法
public static int linSearch(int[] arr,int data){
int index = -1;
boolean flag = false;
for(int i = 0;i < arr.length;i++){
if (arr[i] == data){
index = i;
System.out.println("元素" + data +"在数组的位置为:" + i);
flag = true;
}
}
if(!flag){
System.out.println("未找到指定元素!");
}
return index;
}
}
输出结果:
排序前:[34, 5, 22, -98, 6, -76, 0, -3]
排序后:[-98, -76, -3, 0, 5, 6, 22, 34]
反转前:[-98, -76, -3, 0, 5, 6, 22, 34]
反转后:[34, 22, 6, 5, 0, -3, -76, -98]
arr:[34, 22, 6, 5, 0, -3, -76, -98]
arr1:[34, 22, 6, 5, 0, -3, -76, -98]
元素22在数组的位置为:1
5、数组中常见的异常有哪些?请举例说明
(1)空指针异常(NullPointerException):
举例子:
int[] arr = null;
System.out.println(arr[0]);
(2)数组角标越界异常(ArrayIndexOutOfBoundsException):合理的范围 [0,arr.length-1]