1.使用冒泡排序,实现如下数组的从小到排列
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3}
public class BubbleSortTest{
public static void main(String[] args){
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
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 tem = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tem;
}
}
}
for(int i = 0 ; i < arr.length; i++){
System.out.print(arr[i] + "\t");
}
}
}
使用快速排序法实现
public class QuickSortTest{
public static void quicksort(int[] arr, int low, int high){
int i,j,temp,t;
if(low > high){
return;
}
i = low;
j = jigh;
temp = arr[low];
while(i < j){
while(temp <= arr[j] && i < j){
j--;
}
while(temp >= arr[i] && i < j){
i++;
}
if(i < j){
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
arr[low] = arr[i];
arr[i] = temp;
quicksort(arr,low,j-1);
quicksort(arr,j+1,high);
}
public static void main(String[] args){
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
quicksort(arr,0,arr.length-1);
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + "\t");
}
}
}
快排时间复杂度:O(nlogn) 冒泡时间复杂度O(n^2)
2. 如何让反转上面的数组,请代码实现
public class BubbleSortTest{
public static void main(String[] args){
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
for(int i = 0 ; i < arr.length/2; i++){
int temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
for(int i = 0 ; i < arr.length; i++){
System.out.print(arr[i] + "\t");
}
}
}
3.线性查找,22是否存在,存在返回索引,不存在,给出提示信息
public class BubbleSortTest{
public static void main(String[] args){
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
int dest = 22;
boolean isFlag = true;
for(int i = 0 ; i < arr.length; i++){
if(dest.equals(arr[i])){
System.out.print(“找到指定元素,位置为” + i);
isFlag = false;
break;
}
}
if(isFlag == false){
System.out.print(“未找到指定元素");
}
for(int i = 0 ; i < arr.length; i++){
System.out.print(arr[i] + "\t");
}
}
}
4.数组中常见异常
ArrayIndexOutOfBoundException:数组角标越界异常
合理范围:[0,arr.length - 1]
越界:arr[-1],arr[arr.length]
NullPointerException:空指针异常
int[] arr = null;
arr[0];