`
Luob.
  • 浏览: 1572434 次
  • 来自: 上海
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
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
8
3
分享到:
评论
1 楼 aihaiye99 2013-03-21  
整理的不错挺详细的,比我当时学的仔细多了!

相关推荐

    MySQL 5.1参考手册

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    mysql官方中文参考手册

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    MYSQL中文手册

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. ...

    MySQL 5.1参考手册中文版

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用...

    MySQL5.1参考手册官方简体中文版

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    MySQL 5.1中文手冊

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    MySQL 5.1参考手册 (中文版)

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    MySQL 5.1官方简体中文参考手册

    3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例094 整数进制转换器 115 实例095 查看数字的取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型的比较 118 5.4 面向对象的特征 119 实例098 经理与员工的差异 119 实例099 重写父类中的方法 121 实例...

    java范例开发大全(pdf&源码)

    实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例9 移位运算符 16 实例10 转型运算符 17 2.3 其他形式 18 实例11 常量与变量 ...

    java范例开发大全源代码

     实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6 关系运算符 13  实例7 逻辑运算符 14  实例8 位运算符 15  实例9 移位运算符 16  实例10 转型运算符 17  ...

    Java范例开发大全 (源程序)

     实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6 关系运算符 13  实例7 逻辑运算符 14  实例8 位运算符 15  实例9 移位运算符 16  实例10 转型运算符 17  2.3 其他...

    java范例开发大全

    实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例9 移位运算符 16 实例10 转型运算符 17 2.3 其他形式 18 实例11 常量与变量 ...

    mysql5.1中文手册

    二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境...

    Java范例开发大全(全书源程序)

    实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例9 移位运算符 16 实例10 转型运算符 17 2.3 其他形式 18 实例11 ...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

Global site tag (gtag.js) - Google Analytics