Java基础--数组

一.数组是什么?

数组其实就是一个用来保存一组相同类型数据的容器。

数组在堆内存中开辟的是一块连续的内存空间。

数组的三种声明方式:

int[]  array = new int[数组的长度];

int[]  array1 = new int[]{1,2,3,4,5,6};

int[]  array2={1,3,5,7};


二.数组的遍历是如何实现的?

一维数组的遍历

public static void main(String[] args) {

    int[] array1 = {1,2,3,4,5};

    for (int i = 0; i < array1.length; i++) {

            System.out.println(array1[i]);                            

}

二维数组的遍历

for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                System.out.print(array1[i][j] + " ");
            }
        }

三.如何实现数组中元素的反转?

public static void changeArray(int[] array) {
        /*
         * 交换的次数--数组的长度/2
         * array[i] = array[array.length-1-i];
         */
        //计算循环次数
        int num = array.length/2;
        for (int i = 0; i < num; i++) {
            int temp = array[i];
            array[i] = array[array.length-1-i];
            array[array.length-1-i] = temp;
        }
    }

使用这个changeArray函数即可实现元素的反转。

四.数组中常见的两种排序

1.冒泡排序

冒泡排序的核心思想是:对相邻两个数进行比较换位。

代码实现如下:

public static void main(String[] args) {
        int[] array = {3,2,5,1};
        /*
         * 外循环 控制一共比了多少趟
         * 内循环 控制一趟比多少次
         * 要求: 2分钟
         */
        for (int i = 0; i < array.length-1; i++) {
            for (int j = 0; j < array.length-1-i; j++) {
                //判断大小
                //外循环-1 防止数组越界
                //内循环-i 循环一次,确定一个数,每次都少比一次
                if(array[j]>array[j+1]) {
                    //交换
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }

2.选择排序

选择排序的核心思想是:选择一个数(选第一个数)和其他的数进行比较交换

代码实现如下:

public static void main(String[] args) {
        int[] array = {3,2,5,1};
        for (int i = 0; i < array.length-1; i++) {
            for (int j = 1+i; j < array.length; j++) {
                //用第0个数和剩下比较
                if(array[i]>array[j]) {
                    //交换
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
            }
        }
    }

五.折半查找

折半查找有一个前提,数组必须是有序数组

public static void main(String[] args) {
        int[] array = {1,22,33,44,55,66};
        int key = 55;
        // 先声明要使用到的变量
        int min = 0;
        int max = array.length - 1;
        int mid = ( min + max )/2;
        //循环  明确知道循环的停止条件
        while(array[mid]!=key) {
            //判断key和中间角标志来挪动最小角标或最大角标
            if(key>array[mid]){
                min = mid + 1;
            }
            if (key<array[mid]) {
                max = mid - 1;
            }
            //每次循环都要有折半操作
            mid  = ( min + max )/2;
            //数组中没有这个数的时候
            if (min>max) {
                //没有这个数 使用-1表示
                mid = -1;
                break;//跳出循环
            }
        }

猜你喜欢

转载自blog.csdn.net/hehanhh/article/details/80230627