首页 > 代码库 > 黑马程序员-java基础-数组&进制转换

黑马程序员-java基础-数组&进制转换

第一讲  数组初始化&操作

1、  数组定义

概念:数组是同一种类型数据的集合,其实数组就是一个容器。数组中的元素从0开始编号,这样方便了对这些元素进行操作(获取、修改改、排序等)。

数组的定义格式有:

Int[] arr = new int[10]; ——这里指定数组的长度,后续需要分别对每一个元素赋值;

Int[] arr = new int[]{2,1,5,9};——创建数组实体并初始化,不需要指定长度;

Int[] arr = {2,1,5,9};——定义数组并初始化;

2、  数组操作

1)  获取数组中的元素,通常需要遍历数组

Int[] arr = {2,1,5,9};

For(int x = 0;x<arr.length;x++)  //length是数组中表示数组元素个数的属性。

{

            System.out.print(arr[x]);//遍历数组arr,打印数组中所有元素。

}

2)  获取最值

获取最大值思路:1、获取最值需要比较,每一次比较都会有一个较大的值,可以将该较大值存在一个临时变量中。2、让数组中的每一个元素和这个变量中的值进行比较,如果大于了变量中的值,就将该元素值赋给该变量。3、当所有的元素都比较完成,那么该变量中的值就是数组中的最大值。

步骤:1、定义变量,初始化为数组中任意一个元素;2、通过循环语句对数组进行遍历;3、在遍历过程中定义判断条件,如果遍历到的元素比变量中的值大,就将元素赋值给变量。

获取最小值思路:与获取最大值相似,只是在遍历数组进行比较时,变量中存储的是较小值。

获取最大最小值代码实现如下:

                      

 

 

第二讲 数组排序

1、  选择排序法

内循环一次,最值出现在头角标位置上

思路:拿数组第一个元素与后面的元素遍历比较,将若大于(小于)第一个则两者值互换,第一个元素与其他元素比较完后,拿第二个元素与后面的元素进行遍历比较,依次类推,直到遍历完成,数组排序完成。

实现代码如下:

2、  冒泡排序法

内循环一次,最值出现在最后角标位置上。

思路:相邻两个元素进行比较,如果符合条件(大于或小于)进行值互换;

代码实现如下:

3、  希尔排序

希尔算法是最快的排序算法。

选择/冒泡排序法效率低的原因是:比较完成后需要在堆内存中进行元素对换。解决方案:将需要换位的元素脚标存放在内存中,最后一次互换就直接数组元素互换。

4、  Java中有自带的排序方法:Arrays.sort(arr);

 

 

第三讲  数组查找操作

1、  获取关键值在数组中第一次出现的位置

思路:遍历数组,并与该值进行比较,如果相等则返回角标位置。

代码实现如下:

2、  折半查找算法

折半查找可以减少遍历的次数,从而提高查找的效率,但要求该数组必须是有序的。

思路:用关键值与数据中间元素进行比较,然后根据比较结果判断关键值在前半部分还是后半部分,然后再折半查找那一部分,依次类推。

代码实现如下:

 

3、  练习

将一个元素插入到一个有序数组中,保证该数组仍是有序的。如果获取该元素应该插入数组的哪个位置。

思路:

折半算法在数组中查找该元素,返回最小下角标,该下角标就是元素插入数组的位置。

 

 

第四讲  进制转换

1、  十进制转成二进制

2、  十进制转成十六进制

3、  查表法将十进制转成十六进制

思路:先将十六进制的元素(0~F)临时存储在一个表中,每一次&15后的值作为索引区查找建立好的表,就可以找到对应的元素。。

代码实现如下:

4、  查表法将十进制转成二进制

 

知识点总结

1、  数组有多种定义和初始化方式

1)  若不知道数组具体值,但直到数据长度,可以定义数据并指定长度:int [] arr = new int[10],后续只能遍历将元素赋值给数组中的单独位置;

2)  若不知道数组长度,但直到数组中的值,可以用这种方式定义并初始化:int [] arr = new int[]{1,2,3}

2、  数组排序

都需要利用嵌套循环。

1)选择排序法,内循环一次,最值出现在头角标位置上;

2)冒泡排序法,内循环一次,最值出现在最后角标位置上;

3)希尔排序效率最高;

4)java中有自带的排序程序:Arrays.sort(arr);

3、  查找

查找某个关键字在数组中第一次出现的位置,折半算法效率较高。

4、  进制转换

通过取余来获取某个位上的值,可以通过查表法来进行转换,取值更方便。

黑马程序员-java基础-数组&进制转换