以下是數(shù)組的常用幾個(gè)案例
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 ? 數(shù)組排序---選擇排序(最值出現(xiàn)在最前位)
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數(shù)組排序---冒泡排序
3,1,4,2如孝,7,5 ? ? ? ? ? ? ? (后面的是最大的,最值出現(xiàn)在最后位)
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:避免角標(biāo)越界第晰;
堆換位置比較多時(shí)
53 ?數(shù)組位置置換功能抽取
public static void swap(int[] arr,int a,int b){
? ? ? ? ? int temp=arr[a];
? ? ? ? ?arr[a]=arr[b];
? ? ? ? ?arr[b]=temp;
}
調(diào)用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)
注:提高效率,必須是順序的數(shù)組彬祖;
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
}