A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周发建 中级黑马   /  2016-3-21 13:42  /  351 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(一)数组                       
同一类型集合,其实就是容器
int[] arr = new int[3];  不明确容器中的具体数据,但知道个数
int[] arr = {1,2,3};                存储已知的具体数据
1.打印数组
/**打印数组 */
public static void printArray(int[] arr){
        System.out.print("[");
        for(int i=0;i<arr.length;i++){
                if(i == arr.length-1){
                        System.out.print(arr+"]");
                }else{
                        System.out.print(arr+",");
                }
        }
}
2.获取int[]的最大值
/**获取int类型数组的最大值*/
public static int getMax(int[] arr){
        int maxIndex = 0;
        for(int i=1; i<arr.length; i++){
                if(arr> arr[maxIndex]){
                        maxIndex = i;
                }
        }
        return arr[maxIndex];
}
3.交换int[]的两个数的位置
/**交换int类型的两个数的位置*/
private static void swap(int[]arr, int i, int j){
        int temp = arr;
        arr = arr[j];
        arr[j] = temp;
}
        //交换两数位置,位操作效率高
        private static void swap(int[] arr,int i,int j){
                arr = arr^arr[j];
                arr[j] = arr^arr[j];
                arr = arr^arr[j];
}
4.选择排序
/**选择排序*/
public static void selectSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
                for(int j=i+1;j<arr.length;j++){
                        if(arr > arr[j]){
                                swap(arr, i, j);
                        }
                }
        }
}
5.提高性能的选择排序
/**提高性能的选择排序*/
public static void selectSort2(int[] arr){
        for(int i=0;i<arr.length-1;i++){
                int minIndex = i;
                int minNum = arr;
                for(int j=i+1;j<arr.length;j++){
                        if(minNum > arr[j]){
                                minNum = arr[j];
                                minIndex = j;
                        }
                }
                if(i != minIndex)
                        swap(arr, i, minIndex);
        }
}
6.冒泡排序
/**冒泡排序*/
public static void maoPaoSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
                for(int j=0;j<arr.length-i-1;j++){
                        if(arr[j] > arr[j+1]){
                                swap(arr, j, j+1);
                        }
                }
        }
}
7.二分查找
/**二分查找*/
public static int findEr(int[] arr,int val){
        int min = 0;
        int max = arr.length-1;
        int mid = (min + max) >>>1;
        while(min <= max){
                if(arr[mid]>val){
                        max = mid-1;
                }else if(arr[mid]<val){
                        min = mid+1;
                }else{
                        return mid;
                }
                mid = (min + max) >>>1;
        }
        return -(mid+1);
}
8.进制转换,查表法
/**进制转换,查表法*/
public static String MyToString(int num, int radix){
        if(0 == num){
                return "0";
        }
        if(10 == radix){
                return num+"";
        }
        //查表法
        char[] dic = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
        //临时数组与指针
        char[] temp = new char[32];
        int pos = 0;
        int ch;
        if(2 == radix){
                while(num != 0){
                        ch = num & 1;
                        temp[pos++] = dic[ch];
                        num = num >>>1;
                }
        }else if(8 == radix){
                while(num != 0){
                        ch = num & 7;
                        temp[pos++] = dic[ch];
                        num = num >>>3;
                }
        }else if(16 == radix){
                while(num != 0){
                        ch = num & 15;
                        temp[pos++] = dic[ch];
                        num = num >>>4;
                }
        }else{
                return "";
        }
        String str = "";
        while(pos>0){
                str += temp[--pos];
        }
        return str;
}
(二)经验之谈
/*
注意:代码就是思想的一种体现形式【先有思想--再有代码】
        进制:计数的一种方式【2进制、8进制、10进制、16进制】
        其他进制---10进制:求幂法
        10进制---其他进制:求余法
        116进制位 = 42进制位
        18进制位 = 32进制位
        负数的二进制 = 这个数的正数的二进制取反 + 1
       
        编码表
                ASCII
                Unicode:国际标准码表,java使用的码表
                GB2312GBK
       
        内存划分
                1. 寄存器
                2. 本地方法区
                3. 方法区
                4. 栈内存:存储局部变量
                5. 堆内存:存储对象实体
*/

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马