8.二维数组和常见排序算法

8.二维数组和常见排序算法

ID:43347255

大小:501.00 KB

页数:18页

时间:2019-09-30

8.二维数组和常见排序算法_第1页
8.二维数组和常见排序算法_第2页
8.二维数组和常见排序算法_第3页
8.二维数组和常见排序算法_第4页
8.二维数组和常见排序算法_第5页
资源描述:

《8.二维数组和常见排序算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、目录1.二维数组11.1概念11.2.二维数组的定义21.3二维数组的应用32.常见的排序算法32.1排序算法的分类32.2直接插入排序42.3希尔排序52.4简单选择排序72.5堆排序82.6冒泡排序142.7快速排序15这次课我们学习数组中的二维数组,和一些常见的排序算法。在理解上不容易理解,希望大家耐心学习。考验你们逻辑思维的时候到了~~学算法,要冷静中带一点嗨。1.二维数组1.1概念所谓二维的维,指的是一个“维度”.通俗的讲,如果一维是单一的一条线,那么二维可以看作是一个面。例如,可以用图来对比一下它们:一维数组:二维数组:对于二维数组,我们可以

2、理解在一维数组当中,每一个格子里又存了一个一维数组。也可以干脆形象一点的理解,二维数组类似于我们画表格的n行n列1.2.二维数组的定义方式1:int[][]arr=newint[5][2];定义名称为arr的二维数组,我们简单点理解成5行2列。但果能够理解为大小为5的一维数组里,每个格子放了一个大小为2的一维数组会更好些,因为有利于对内存的理解。对第一行的第一个格子赋值的写法为:arr[0][0]=80;(注意,数组的角标依然是从0开始)方式2:int[][]arr=newint[3][];定义了一个名称为arr的二维数组,定义了3行,但是没有定义列。如

3、果我们用n行n列的思维去理解,这里就不容易理解了,为什么它可以只定义了行却先不定义列?所以这里需要用回格子的思维,定义了3个格子,但每个格子里放多大的一维数组先不定义。这样就好理解了。如图:看上图,每一个格子里再放入一维数组,是不是就成了二维数组?神奇的是,每个格子里可以放不同大小的一维数组。如图:图比较丑,不要嫌弃它…用代码体现出来就是:arr[0]=newint[3];arr[1]=newint[1];arr[2]=newint[2];方式3:int[][]arr={{1,2},{8,3,1},{2}};第三种方式最为直观,定义了大小为3的二维数组,

4、然后每个格子里放着不同大小的一维数组。但这种方式比较死板.1.3二维数组的应用实际开发当中,二维数组主要用于一些简单的小的数据的分类存储.例如,有这样一个需求:将软件部,产品部,财务部门本月四周的财务数据存到数组里。很显然,我们可以用一维数组,将3个部门的数据都存到里边。但是这样太杂乱,难以区分哪些数据分别输入哪个部门,如果部门有10个,那显然一维数组里的这一堆数据就更混乱。所以,我们就需要用二维数组:定义一个大小为3个二维数组,arr[0]用来存软件部,arr[1]用来存产品部,arr[2]用来存财务部.那么有同学会问我怎么记得住哪个下标属于什么部门。

5、这个简单,用变量标识就可以了,例如定义软件的整型变量intruanJianBu=0;然后再数组下表中引用它:arr[ruanJianBu]={2,3,6};这样不就一目了然了么?同志们,学完了以上章节,java的入门基础语法知识就告一段落了。不知道你们感触如何呢?如果你坚持完成了每一次的课后练习,相信你已经有所收获~~接下来,要跟大家介绍一些常见的排序算法。算法,实际项目开发当中其实用的并不多用,但如果你立志将来往数据分析大牛方向走,还是要从点滴做起,把算法学好。2.常见的排序算法首先大家要理解,什么是算法。通俗的理解就是为了得到某个结果的一种计算方法,

6、或者说是一种游戏规则,通过这些不同的规则我们能够获得同样的结果。其次,要学会简单对2个变量进行交换数值,最简单的方式是,设置一个中间临时变量temp,例如inta=2;intb=3;如何将它们交换,把3赋值给a,把2赋值给b?有些同学说直接inta=3;intb=2;不就可以了?不要这么嗨..如果数值是用户输入的变量呢?常见的做法是设置一个中间变量temp,然后temp=a;a=b;b=temp;这样就达到了两个变量相互交换的效果。这方式虽然笨拙,但却最容易看懂,也谈不上耗内存资源,开发中经常使用。2.1排序算法的分类排序算法大致可分为以下几类。(1)插

7、入排序:直接插入排序,希尔排序(2)交换排序:冒泡排序,快速排序(3)选择排序:直接选择排序,堆排序(4)归并排序(5)分配排序:基数排序我们这里先学习前面3类.已经足够大家折腾了.2.2直接插入排序直接插入排序法主要思想类似于玩扑克牌时按从小到大整理牌的过程,第一趟比较最前面的2个数,排序好。然后第二趟用第三个数与前面排序好的2个数进行比较,进行插入排序;第三趟用第4个数与前面排序好的3个数进行比较,插入到他们当中去.以此类推。如图:那么如何用java来实现呢?很明显,如此重复的动作,用for循环是最适合的了。用多少个for循环?我们可以这样思考,在这

8、个过程中,主要有2个动作:(1)加入第n张牌,也就是待比较插入的牌(2)与前面排

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。