java自学记录-8

记录时间:2019-7-29
记录内容摘要:
1、二维数组
2、快速排序
3、数组查找、删除、插入

1、二维数组

二维数组的定义方式主要有两种
1、单独定义不初始化;采用new类来定义

double[][] name = new double[row][col];

2、直接初始化

int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}};

二维数组可以理解为一维数组的嵌套,即arr[0]、arr[1]分别是一个一维数组,在调用具体元素时需要具体行和列;
遍历二维数组时需要双重循环

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

i控制行,j控制列

arr.length为有几行
arr[i].length为第i行的一维数组长度;
不同行的长度可以不同;(可以通过输出arr[i].length来验证)

2、快速排序
java中快速排序有直接的算法
Arrays.sort(num);可以直接对num数组进行排序;
快速排序是采用递归思想;对某一数字将小的放到左边,大的放到右边,然后再对左右两边进行相同操作,直到完成;
快速排序默认升序,若需要降序可是数组首尾倒置

3、数组查找、删除、插入

1、数组查找
数组查找中我所知道的有两种
一、遍历查找
即一个一个将数组中的元素与所查找元素做对比,直到找到或者找完整个数组为止;
二、二分查找
前提:数组为有序数组,升序降序都行
二分查找是进行范围性确定,通过比较大小来逐步确定所查找元素的范围来最终确定元素位置
代码如下:

public class QuickSort {
    public static void quickSort(int[] arr,int low,int high){
        int i,j,temp,t;
        if(low>high){
            return;
        }
        i=low;
        j=high;
        //temp就是基准位
        temp = arr[low];
 
        while (i<j) {
            //先看右边,依次往左递减
            while (temp<=arr[j]&&i<j) {
                j--;
            }
            //再看左边,依次往右递增
            while (temp>=arr[i]&&i<j) {
                i++;
            }
            //如果满足条件则交换
            if (i<j) {
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }
 
        }
        //最后将基准为与i和j相等位置的数字交换
         arr[low] = arr[i];
         arr[i] = temp;
        //递归调用左半数组
        quickSort(arr, low, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, high);
    }
 
 
    public static void main(String[] args){
        int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        quickSort(arr, 0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

2、数组删除
数组的删除并未真正删除数组元素个数,只是更改数组的内容以及访问的长度;因为数组的大小在定义时已经确定并且不可更改
数组的删除较为麻烦,因为在删除某一元素后需要将该元素后的元素全部向前移一位,在c中学到的链表更便于删除和插入;

3、数组插入
数组的插入首先要求数组的长度要足够,因为数组插入和删除一样,在插入操作后都需要将后面的元素移动。所以在删除和插入方面,数组并不够灵活;

额外收获
1、今天第一次看到了自己想想中的那种弹窗式对话,而不是 老旧的控制台文本交流;明天就开始学习一下弹窗式交流(自己取的名字。。)

可以采用cal系列来获得日期,在月份的时候因为时从0月开始算,所以需要+1

java二维数组删除下标 java二维数组删除一行_二维数组