以下是数组的常用几个案例
50 获取最大值
public static int getMax(int[] arr){
int max=arr[0];
for(int x=1;x<arr.length;x++){
if(arr[x]>max)
max=arr[x];
}
return max;
}
public static void main(String[] args){
int[] arr={5,1,8,19,11,23};
int max=getMax(arr);
System.out.println("MAX="+max);
}
public static int getMax_2(int[] arr){
int max=0;
for(int x=1;x<arr.length;x++){
if(arr[x]>arr[max]){max=x;}
}
return arr[max];
}
51 数组排序---选择排序(最值出现在最前位)
3,1,4,2,7,5
pubic static void selectSort(int[] arr){
for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
52数组排序---冒泡排序
3,1,4,2,7,5 (后面的是最大的,最值出现在最后位)
pubic static void bubbleSort(int[] arr){
for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-x-1;y++){
if(arr[y]>arr[y+1]){
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
=========>-x 让每一次比较的元素减少;-1:避免角标越界;
堆换位置比较多时
53 数组位置置换功能抽取
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
调用swap(arr,y,y+1) 或者Arrays.sort(arr)
54 折半查找
//查找操作
public static int getIndex(int[] arr,int key){
for(int x=0;x<arr.length;x++){
if(arr[x]==key)
return x;
}
return -1;
}
public static void main(String[] arg){
int arr={3,1,5,4,2,9};
int index=getIndex(arr,2);
S.o.p(index);
}
----------------------------------------
折半查找(1)
注:提高效率,必须是顺序的数组;
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
min=mid-1;
mid=(max+min)/2;
}
return mid;
}
折半的第二种方式(2)
public static int halfSearch_2(int[] arr,int key){
int min=0,max=arr.length-1,mid;
while(min<=max){
mid=(min+max)/2;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
min=mid-1;
else
return mid;
}
return -1; <===== min>max
}