class ArryDemo{ //调出最大或最小值: public static int getMax(int arr[]){ if(arr==null||arr.length==0){ //判断数组是否为空或数组长度不能为0 return -1; } int max=arr[0];//取数组的第一个值 for(int i=1;i<arr.length;i++){ max=max>arr[i] ? max : arr[i];//三元运算 } return max; } //冒泡排序法: public static void MaoPo(int arr1[]){ if(arr1==null||arr1.length==0){ System.out.println("排序时,数组不能为NULL或数组长度不能为0"); } for(int i=arr1.length-1;i>0;i--){//i表示外部循环, for(int j=0;j<i;j++){//j表示内部循环(数组里面的下标循环) if(arr1[j]<arr1[j+1]){//符号表示正序倒序切换 int temp=arr1[j]; //引用一个第三方,套取(交换)数组下标位置 arr1[j]=arr1[j+1]; arr1[j+1]=temp; } } } for(int i:arr1){//增强for循环 System.out.print(i+" "); } System.out.println(); } //选择排序法: public static void SelectSort(int arr2[]){ if(arr2==null||arr2.length==0){ System.out.println("排序时,数组不能为NULL或数组长度不能为0"); } for(int i=0;i<arr2.length-1;i++){//选择 for(int j=i+1;j<arr2.length;j++){ if(arr2[i]>arr2[j]){ int temp=arr2[i]; arr2[i]=arr2[j]; arr2[j]=temp; } } } for(int i:arr2){ System.out.print(i+" "); } } //进制的转化 public static String ShowNumber(int i){ System.out.println( "\n 二进制:"+Integer.toBinaryString(i));//调用了Integer类; System.out.println( " 八进制:"+Integer.toOctalString(i)); System.out.println( " 十六进制:"+Integer.toHexString(i)); return "\n 二进制:"+Integer.toBinaryString(i)+//返回值 "\n 八进制:"+Integer.toOctalString(i)+ "\n 十六进制:"+Integer.toHexString(i); } //折半查找(二分法) public static void HalfFind(int num){ int arr[]={1,5,8,12,15,19,20,27,33};//定义一个数组 int max=arr.length-1,min = 0; //定义数组中的最大值,最小值 while(min<=max){//先判断在循环, int mid=(min+max)/2;//数组的中间数 if(arr[mid]==num){//判断数组下标对应的值是否是查找值 System.out.println(mid); break;//结束语句 }else if(arr[mid]>num){//当数组下标对应的值大于查找值时 max=mid-1;//查找范围在左,最大值等于中间值的左侧 }else{ min=mid+1;//查找范围在右,最小值等于中间值的右侧 } } if(min>max){//当查找时数组最小值大于最大值时,查找的数据不存在 System.out.println("查询不在数组中"); } } public static void main(String[] args){ int arr[]={2,1,5,8,3,6}; System.out.println(getMax(arr));//调用最大值最小值 MaoPo(arr);//冒泡法排序 SelectSort(arr);//选择排序 ShowNumber(15);//进制转变 HalfFind(15);//折半查询 } }
折半查找
------------
在有序的数列中,进行二分法查找,每次取出搜索范围的中间
值进行比较,依次再进行范围的缩小,直至找到所需要的值。
stack 栈:用于储存局部变量;
heap 堆: 储存数组和对象,通过new建立的实例存放在堆内存中。