Java语言组成基础——需要格外注意的问题之数组(三)

来源:互联网 发布:中国食物浪费数据 编辑:程序博客网 时间:2024/06/10 02:41

静态初始化:int []=new int[]{3,1,6,5,4}或int []={3,1,6,5,4},int []=new int[2]

一、数组操作

1、获取数组中元素

遍历(for i=0;i<5;i++)print(arr[i]))
注意错误的是:Sys.out.println(arr);这样打印出来的是数组存放的地址。

2、获取数组中最大的值

思路:通过一个变量进行临时存储。
int max=arr[0];

3、对数组排序

无论是什么排序都要把代码置换位置,把这部分代码提取出来,单独封装成一个函数(传入数组)

(1)选择排序

a[0]与其后的数字进行比较,将两者中较小的一个储存到最前面;之后逐渐选出第二、第三最小的数值

(2)冒泡排序

相邻元素进行比较,符合条件换位(最大的肯定是最后位,下一次可以不用比较最后一个数值,因为其是最大的),逐渐选出最大的、次大的、第三大的依次放在后边,下次可不用比较

(3)shell排序

4、数组查找

(1)第一次出现位置:key,逐个比较

(2)折半:min,max,mid=(min+max)/2,在arr[mid]!=key,反复挑战min与max的位置,

public static int halfserach(int[] arr,int key){int min=0;int max=arr.length-1;int mid=(min+max)/2;while(arr[mid]!=key){if(arr[mid]>key)max=mid-1;else if(arr[mid]<key)min=mid+1;else if(min>max)return -1;mid=(min+max)/2;}return mid;  // 此处应该在while循环以外,循环里的mid是不停变化的,外圈的mid是最终的mid}
5、进制转换

(1)十转二:(不断除二取余,利用StringBuffer对象,通过append函数依次添加,最后打印reverse版,即倒着打印)

(定义二进制表)

(2)十转十六:(不断地与15进行&运算,在>>4,反复进行)

 (查表法)

二、数组中的数组——二维数组

int[][] arr=new int[3][4]

int[][] arr=new int[3][]——>sys("arr[1]")=null三个一维数组未进行初始化,数组为引用数据类型,默认是null

arr[0]=new int[3]——>初始化后,默认为0000


阅读全文
0 0
原创粉丝点击