第一讲 数组初始化&操做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);
三、 查找
查找某个关键字在数组中第一次出现的位置,折半算法效率较高。
四、 进制转换
经过取余来获取某个位上的值,能够经过查表法来进行转换,取值更方便。