2020-12-13 课堂总结

  1. 建立二分法查找

解题思路:
将组内元素由小到大排序 //冒泡排序
建立 left , right 分别指向数组两端数据
建立mid = (left + right)/2 ; //中间值
通过对比寻找数值key与中间值mid
key > mid 则令left = mid + 1;
key < mid 则令right = mid - 1;

代码实现:

public static void bubbleSort(int[] array) {
        boolean flg = false;
        //i 趟数
        for (int i = 0; i < array.length-1; i++) {
            flg = false;
            for(int j = 0; j < array.length-1-i;j++) {
                if(array[j]  > array[j+1]) {
                    int tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                    flg = true;
                }
            }
            if(flg == false) {
                return;    
                //判断是否交换,未交换说明已经有序
            }
        }
    }
public static int binarySearch(int[] array,int key) {
        int left = 0;
        int right = array.length-1;
        while (left <= right) {
            count++;
            int mid = (left+right)/2;
            if(array[mid] == key) {
                return mid;
            }else if(array[mid] < key) {
                left = mid+1;
            }else {
                right = mid-1;
            }
        }
        return -1;//没有找到目标数字
    }
  1. 逆置数组

解题思路:
定义两个下标分别在首尾两端
逐个交换两下标的值

代码实现:

public static void reverse(int[] array) {
       if(array == null) {
           return;
       }//判断数组是否为空
       int i = 0;
       int j = array.length-1;
       while (i < j) {
           int tmp = array[i];
           array[i] = array[j];
           array[j] = tmp;
           i++;
           j--;
       }
   }
  1. 整理数组使偶数在前奇数在后

解题思路:
建立 i, j两个下标指向数组两端,先判断i是否为偶数,i 为偶数 i ++,
i 为奇数判断 j 的奇偶性,j 为奇数时交换,j为偶数时 j - -,
当 i = j 时结束循环返回数组
代码实现:

public static void func(int[] array) {
        if(array == null) return;
        int i = 0;
        int j = array.length-1;
        while (i < j) {
            while ( i < j && array[i] % 2 == 0) {
                i++;
            }
            while (i < j && array[j] % 2 != 0) {
                j--;
            }
            int tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
        }
    }
  1. 二维数组的三种打印方法
 int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print (array[i][j] +" ");
            }
            System.out.println();
        }
//第一种易理解但冗长
        for (int[] arr:array) {
            for (int x : arr) {
                System.out.print(x +" ");
            }
            System.out.println();
        }
//第二张foreach方法简练
        String ret = Arrays.deepToString(array);
        System.out.println(ret);
//第三种方法打印出的数组带有中括号
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值