JavaSE Day7 知识总结

学习目标:

  • 数组

  • 算法入门

    • 查找

    • 排序


数组:

什么是数组:

数组是一种,连续内存,大小固定的线性表,是一种数据结构,用来解决大量数据的存储问题。

数组的定义:

第一种: 数据类型 【 】变量名称 = new 数据类型【大小】;

第二种: 数据类型【】 变量名称 = new 数据类型【】{值1,值2,值3,……};

第三种:数据类型【】 变量名称  ={值1,值2,值3,……};

数组特点

  1. 大小固定,长度不可变。

  2. 连续内存地址(不能在其他块创建数组内存地址,会导致非连续性)

  3. 存储的数据类型固定

  1. 数组是保存在堆内存中的,因此数组是一个对象!!!

容器(collection):

容器一般是一种数据结构(都是容器),它是用来解决多个数据保存计算的容器。

1,数组长度:

                数组对象.length                   // 获取数组的(长度)属性

2,访问数组元素:                通过下标来访问,

                注意:在编程中,99%情况下,下标都是从0开始的(jdbc从1开始)

                数组对象 [下标值]                  //如果下标值超出范围,就会抛出异常

                

3,数组是可以修改的

数组对象 [需要修改对象的下标值] =  新的值

 4,遍历数组:(做一个索引)      

方法1:

方法2:        

5,(迭代循环)Foreach              //循环加强,是JDK5的新特性,是一种迭代容器操作

                        For(数据类型 临时变量:迭代对象){

                                                System.out.printin(临时遍历);

                                                                }

练习:用户输入10个数,输入到数组中,求数组的最大值和平均值。


排序:(算法 | 菜鸟分类 | 菜鸟教程 (runoob.com)

冒泡排序:

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

1. 算法步骤

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 2.动图演示

3. 什么时候最快

当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊)。

4. 什么时候最慢

当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗)。

 选择排序:

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间吧。

1. 算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

2.动图演示

假设第一个值为最小值,然后依次做判断到结束,直到找到真正的最小值,交换这

       个数,然后开始做第二个数的判断,直到数组内的数全部判断完,结束。

插入排序:

默认第一个数为有序数组,之后的所有数依次插入第一个数组中,并且必须保证插入时数组一直是有序的。

1. 算法步骤

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

2.动图演示


查找算法:

都是针对有序数据而言的!!!

二分查找(折半查找):

针对有序的序列,可以直接查找中间值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值