java之4天 数组排序,查找.进制转换

系统 1262 0
1.数组的定义格式
    
1.元素类型 [] 数组名=new 元素类型[元素个数或者 数组长度];
   int [] arr=new int[5];  //推荐
   int arrs[] =new  int[5]; 
  
2.静态初始化方式  不能写长度 
   int [] arrs=new int[]{3,1,4,5,6,2};
   int [] arrs={3,1,4,5,6,2}; //好像 是在jdk 5.0 后才能使用 

3.boolean类型的数组默认值为 false

  

数组的操作
    
public static void main(String [] args){
   
  //length 属性 打印  数组
  int [] arr={1,2,4,5,63,8,7,9,5,4};
  
  for(int x=0;x<arr.length;x++){
   
   if(x!=arr.length-1)
       System.out.println(arr[i]+",");
   else
       System.out.println(arr[i]);
   
  }

  int max =getArrMax(arr):
  System.out.println(max):
}

/*
获取最大值
 采用 元素值表示
*/
public static int getArrMax(int[] arr){
  
   int max=arr[0];
   for(int x=0;x<arr.length;x++){
     if(arr[x]>max)
        max=arr[x];
   }
  return max;
}

/*
采用 数组元素小标 来表示
*/
public static int getArrMax(int[] arr){
  
   int max=0;
   for(int x=0;x<arr.length;x++){
     if(arr[x]>arr[max])
        max=x;
   }
  return arr[max];
}

  


/*
//选择排序
*/
    
 public static void main(String[] args){
        int [] arr={1,2,5,6,4,7,3};
        selSort(arr);
        System.out.println(Arrays.toString(arr));

  }
  public static void selSort(int[] arr){
      
     for(int x=0;x< arr.length;x++){
       
        for(int y=x;y<arr.length;y++){
           if(arr[x]<arr[y]){
               int temp=arr[x];
               arr[x]=arr[y];
               arr[y]=temp;
           }
   
         }
     }  
  }

  





//冒泡排序
    

public static void main(String[] args) {
		// TODO Auto-generated method stub
        int [] arr={1,2,5,6,4,7,3};
             bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
}


//冒泡排序
	public static void bubbleSort(int[] arr) {
		
		for(int x=0;x<arr.length-1;x++){
			//-x:让每一次比较的元素减少,-1 :不让下标越界
			for (int y = 0; y < arr.length-1-x; y++) {  
				if(arr[y]>arr[y+1]){
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
		
	}


//数组中交换两个位置的值
public static void swarp(int arr[],int a.int b){

//方法一:
  int temp=arr[a];
  arr[a]=arr[b];
  arr[b]=temp;

//方法二
  arr[a]=arr[a]^arr[b];
  arr[b]=arr[a]^arr[b];
  arr[a]=arr[a]^arr[b];
}


  



//数组中元素的查找
    
//常规
public static void main(String [] args){
  int [] arr={3,1,5,4,6,8,9,7,2};
  int index=getIndex(arr,2);
  System.out.println("index="+index):
  
}

//获取key 第一次出现的位置  -1 表示数组中不存在
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[] args) {	
        int [] arrs={1,2,3,4,5,6,7,8,9};
        System.out.println(halfSearch(arrs,9));
        System.out.println(halfSearch_2(arrs,9));
}

//折半查找  必须保证数据中的元素是有序的
/*
	 * 折半查找方式1,提高效率,但是必须要保证该数组是有序的数组
	 */
	public static int halfSearch(int[] arr,int key){
		int min=0;
		int max=arr.length-1;
		int 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=(max+min)/2;
		   }
		return mid;
	}

/*
	 * 折半查找 2   折半查找方式可以用于插入 数据 
	 */
	public static int halfSearch_2(int[] arr,int key){
		int min=0,max=arr.length,mid;
		
		while(min<=max){
			mid=(min+max)>>1;
		    if(key>arr[mid])
		    	min=mid+1;
		    else if(key<arr[mid])
		    	max=mid-1;
		    else
		    	 return mid;
		}
                return mid; //如果要在 一个有序数组中加入 一个元素, 返回 mid 就是要插入的位置
		//return -1;  //表示在查找的时候 没有找到
		
		
	}

  


进制转换

    
/**
	 * 十进制 --> 二进制
	 * @param num
	 */
	public static void toBin(int num){
		StringBuffer sb=new StringBuffer();
		while(num!=0){
			sb.append(num%2);
			num=num/2;
		}
		System.out.println(sb.reverse());
		
	}
	
	/**
	 * 十进制--->十六进制
	 * @param num
	 */
	public static void toHex(int num){
		StringBuffer sb=new StringBuffer();
		while(num!=0){
			int temp=num & 15;
			if(temp>9)
				sb.append((char)(temp-10+'A'));
			else
				sb.append(temp);
			num=num>>>4;
		}
		System.out.println(sb.reverse());
	}
	
	/**
	 * 十进制--->十六进制
	 * @param num
	 */
	public static void toHex_1(int num){
		StringBuffer sb=new StringBuffer();
		
		for (int i = 0; i < 8; i++) {
			int temp=num & 15;
			if(temp>9)
				sb.append((char)(temp+55));  //
			else
				sb.append(temp);
			num=num>>>4;
		}
		System.out.println(sb.reverse());
	}
	
	/**
	 * 十进制--->十六进制
	 * 查表法  可以为负数
	 * @param num
	 */
	public static void toHex_2(int num){
		StringBuffer sb=new StringBuffer();
		char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		//char 的默认值为 '\u0000';  ' '
		for (int i = 0; i < 8; i++) {
			int temp=num & 15;
			sb.append(chs[temp]);
			num=num>>>4;
		}
		System.out.println(sb.reverse());
	}

public static void main(String[] args) {      
       toBin(6);
        toHex_1(60);
        toHex(-60);
        toHex_2(-60);
	}

  


查表法总结
    


	/**
	 * 各种进制的转换
	 * @param num
	 * @param base  与上的基数
	 * @param offset  偏移量
	 * @return
	 */
	public static String trans(int num,int base,int offset){
		char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		if(num==0)
			return "0";
		StringBuffer sb=new StringBuffer();
		while(num!=0){
			int temp=num & base;
			sb.append(chs[temp]);
			num=num>>>offset;
		}
		return sb.reverse().toString();
	}	
	
	/**
	 * 十进制 -->二进制
	 * @param num
	 * @return
	 */
	public static String toBinary(int num){
		return trans(num,1,1);
	}
	/**
	 * 十进制 -->八进制
	 * @param num
	 * @return
	 */
	public static String toEight(int num){
		return trans(num,7,3);
	}
	/**
	 * 十进制 -->十六进制
	 * @param num
	 * @return
	 */
	public static String toHex(int num){
		return trans(num,15,4);
	}

public static void main(String[] args) {
        System.out.println(toBinary(6));
        System.out.println(toBinary(-6));

        System.out.println(toEight(60));
        System.out.println(toEight(-60));

        System.out.println(toHex(60));
        System.out.println(toHex(-60));
}

  


二维数组 (组中的数组)
    
public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] arr=new int[3];  // 一维数组
		
		//1.初始化
		int[][] arr1=new int[3][4]; 
		//定义 了一个二维数组中,二维数组中有3个一维数组,
		//每个一维数组中有4个元素.
		System.out.println(arr1[0][1]);
		
		//2初始化
		int[][] arr2=new int[3][];
		arr2[0]=new int[3];
		arr2[1]=new int[]{1,2,3};
		arr2[2]=new int[]{2};
		
		//3初始化
		int[][] arr3={{1,2,3},{0},{2,3}};
		
		int sum=0;
		for (int i = 0; i < arr3.length; i++) {
			for (int j = 0; j < arr3[i].length; j++) {
				sum+=arr3[i][j];
			}
		}
		System.out.println(sum);	
		
	}

  




//数据定义的题目
    
1.一维数组的定义
int [] x  
int x []  ;  //两种都可以


2.二维数组的定义
int[][] y,
int y[][],
int[] y[],

3.注意
int [] x,y[] ;  x是一维数组    y 是二位数组

int x[],y[] :   x是一维数组    y 是二位数组

a :   x[0]=y;    //error

b:    y[0]=x    //yes

c:    y[0][0]=x  //error

d:    x[0][0]=y  //error

e:    y[0][0]=x[0]  //yes

f:    x=y      //error

  

java之4天 数组排序,查找.进制转换


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论