- import java.util.*;
- class ArrayTest
- {
- public static void main(String[] args)
- {
- int arr[]={0,1,2,4,6,8,9};
- //在排序前打印
- System.out.print("排序前的数组:");
- printArray(arr);
- //选择排序
- //selectSort(arr);
- //冒泡排序
- //bubbleSort(arr);
- //Java自带排序
- //Arrays.sort(arr);
- //查找数组中的元素
- //int index=getIndex(arr,2);
- //System.out.println("2所在位置下角标为:"+index);
- //折半查找
- //int index=halfSearch(arr,6);
- //System.out.println("6所在位置下角标为:"+index);
- //折半查找第二种方式
- //int index=halfSearch_2(arr,6);
- //System.out.println("6所在位置下角标为:"+index);
- //在排序后打印
- //System.out.print("排序后的数组:");
- //printArray(arr);
- }
- //选择排序
- public 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;
- swap(arr,x,y);
- }
- }
- }
- }
- //冒泡排序
- public static void bubbleSort(int[] arr)
- {
- for(int x=0;x<arr.length-1;x++)
- {
- for(int y=0;y<arr.length-x-1;y++)//-x:让每一次比较的元素减少。-1,避免角标越界。
- {
- if(arr[y]>arr[y+1])//大于变小于就是从大到小排序
- {
- //int temp=arr[y];
- //arr[y]=arr[y+1];
- //arr[y+1]=temp;
- swap(arr,y,y+1);
- }
- }
- }
- }
- //换位置功能
- public static void swap(int[] arr,int a,int b)
- {
- int temp=arr[a];
- arr[a]=arr[b];
- arr[b]=temp;
- }
- //查找数组中的元素,从头到尾顺序查找
- 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 int halfSearch(int[] arr,int key)
- {
- int 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])
- max=mid-1;
- if(min>max)
- return -1;
- mid=(mid+max)/2;
- }
- return mid;
- }
- //折半查找第二种方式
- public static int halfSearch_2(int[] arr,int key)
- {
- int min=0,max=arr.length-1,mid=(max+min)/2;
- while(min<=max)
- {
- mid=(max+min)>>1;
- if(key>arr[mid])
- min=mid+1;
- else if(key<arr[mid])
- max=mid-1;
- else
- return mid;
- }
- return -1;
- }
- //遍历数组,美化打印格式
- public static void printArray(int[] arr)
- {
- System.out.print("[");
- for(int x=0;x<arr.length;x++)
- {
- if(x!=arr.length-1)
- System.out.print(arr[x]+", ");
- else
- System.out.println(arr[x]+"]");
- }
- }
- }
复制代码 |
|