读书人

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

发布时间: 2013-03-22 09:49:50 作者: rapoo

java之4天 数组排序,查找.进制转换
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 satatic 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 satatic 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 -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'));elsesb.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));  //elsesb.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 stubint [] 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;    //errorb:    y[0]=x    //yesc:    y[0][0]=x  //errord:    x[0][0]=y  //errore:    y[0][0]=x[0]  //yesf:    x=y      //error
1 楼 aihaiye99 2 小时前 整理的不错挺详细的,比我当时学的仔细多了!

读书人网 >编程

热点推荐