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

第一讲  数组初始化&操做java

一、  数组定义算法

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

数组的定义格式有:blog

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

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

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

二、  数组操做效率

1)  获取数组中的元素,一般须要遍历数组容器

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

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

{

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

}

2)  获取最值

获取最大值思路:一、获取最值须要比较,每一次比较都会有一个较大的值,能够将该较大值存在一个临时变量中。二、让数组中的每个元素和这个变量中的值进行比较,若是大于了变量中的值,就将该元素值赋给该变量。三、当全部的元素都比较完成,那么该变量中的值就是数组中的最大值。

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

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

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

                      

 

 

第二讲 数组排序

一、  选择排序法

内循环一次,最值出如今头角标位置上

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

实现代码以下:

二、  冒泡排序法

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

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

代码实现以下:

三、  希尔排序

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

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

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

 

 

第三讲  数组查找操做

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

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

代码实现以下:

二、  折半查找算法

折半查找能够减小遍历的次数,从而提升查找的效率,但要求该数组必须是有序的。

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

代码实现以下:

 

三、  练习

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

思路:

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

 

 

第四讲  进制转换

一、  十进制转成二进制

二、  十进制转成十六进制

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

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

代码实现以下:

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

 

知识点总结

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

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

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

二、  数组排序

都须要利用嵌套循环。

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

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

3)希尔排序效率最高;

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

三、  查找

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

四、  进制转换

经过取余来获取某个位上的值,能够经过查表法来进行转换,取值更方便。

相关文章
相关标签/搜索