数组的高级用法

一、冒泡排序法:

      把一个数组值由小到大排序:两两相比,只到所有数都比较完,数组是由一组由小到大的排序

        int[] array = { 9, 2, 3, 5, 4, 6, 8, 7, 1 };
        // 冒泡排序:{ 1, 2, 3,4,5,6,7,8,9};
        for (int k = 0; k < array.length - 1; k++) {
            for (int i = 0; i < array.length - 1 - k; i++) {
                if (array[i] > array[i + 1]) {
                    int temp = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = temp;
                }
            }
        }

二、选择排序法:拿第一个数与后面数相比,小的交换到前面的位置,只到所有数都比较完,数组是由一组由小到大的排序。

int[] array = { 9, 2, 3, 5, 4, 6, 8, 7, 1 };

for (int y = 0; y < array.length - 1; y++) {
            for (int i = y; i < array.length; i++) {
                if (array[y] > array[i]) {
                    int temp = array[y];
                    array[y] = array[i];
                    array[i] = temp;
                }
            }
        }

 

二、折半(二分)查找数据法

要在一个有序的数据里查找一个数所在的位置可以利用对半查找,这样就可以把查询速度提高一半。

[1,2,3,4,5,6,7,8,9,11]

int c = 5;
        while (true) {
            int min = 0;
            int max = array.length - 1;
            int mid = (min + max) / 2;

            if (min > max) {
                return -1;
            }

            if (array[mid] == c) {
                return mid;
            } else {
                if (c > array[mid]) {// 在右边
                    min = min + 1;
                } else {// 在左边
                    max = max - 1;
                }
                return mid;
            }
        }

posted on 2015-06-19 17:20  peter.peng  阅读(497)  评论(0编辑  收藏  举报