数组的常见操作

 遍历

 方式1: 

    public static void printArray(int[] arr) {
        for(int x=0; x<arr.length; x++) {       //arr.length获取数值长度
            System.out.println(arr[x]);
        }
    }

 方式2: 

    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                System.out.println(arr[x] + "]");
            }
            else {
                System.out.println(arr[x] + ",");
            }
        }
    }

 最值 

最大值 

    public static int getMax(int[] arr) {
        int max = arr[0];

        for (int x=1; x<arr.length; x++) {
            if (arr[x] > max);
                max = arr[x];
        }
        return max;
    }

 最小值 

    public static int getMin(int[] arr) {
        int min = arr[0];

        for (int x=1; x<arr.length; x++) {
            if (arr[x] < min);
                min = arr[x];
        }
        return min;
    }

 逆序 

方式1: 

    public static int reverse (int[] arr) {
        for (int x=0; x<arr.length/2; x++) {
            int temp = arr[x];
            arr[x] = arr[arr.length-1-x];
            arr[arr.length-1-x] = temp;
        }
    }

 方式2: 

    public static int reverse(int[] arr) {
        for (int start=0,end=arr.length-1; start<=end; start++,end--) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }

 查表 

    public static String getString(String[] strArray,int index) {
        return strArray[index];
    }

 基本查找(数组无序) 

方式1: 

    public static int getIndex(int[], int value) {
        for (int x=0; x<arr.length; x++)
            if(arr[x] == value) {
                return x;
            }
        return -1;
    }

 方式2: 

    public static getIndex(int[] arr, int value) {
        int index = -1;

        for(int x=0; x<arr.length; x++)
            if(arr[x] = value) {
                index = x;
                break;
            }
        return index;
    }

 二分查找

前提:数组中的元素要有序

    public static int halfSeach_2(int[] arr,int key){
        int min,max,mid;
        min = 0;
        max = arr.length-1;
        mid = (max+min)>>1; //(max+min)/2;
        while(arr[mid]!=key){
            if(key>arr[mid]){
                min = mid + 1;
            }
            else if(key<arr[mid])
                max = mid - 1;
            if(max<min)
                return -1;
            mid = (max+min)>>1;    
        }
        return mid;
    }

排序 

冒泡排序

相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

    public static void bubbleSort(int[] arr) {
        for(int x=0; x<arr.length-1; x++) {
            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;
                }
            }
        }
    }

选择排序

把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

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

快速排序

快速排序的思想是分治思想。主要原理是将数组分为A[p..q-1] 和A[q+1..r],然后调整元素使得A[p..q-1]小于等于q,也小于等于A[q+1..r]。然后不断的递归,到最后就排序完成。

 

更多算法教程,请移步:

http://ahalei.blog.51cto.com/

 

posted @ 2015-12-16 14:12  M-x  阅读(232)  评论(0编辑  收藏  举报