函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
来源:互联网 发布:c语言编程之道 下载 编辑:程序博客网 时间:2024/04/29 17:33
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
【函数】
【折半查找 数组必须是有序的】
【二维数组】
【函数】
函数只能调用调数,不可以在函数中定义函数
返回值类型为void的函数不能写在输出语句里
函数只实现功能,不要附加多余的功能;
函数只完成功能,至于是否对其功能进行打印那是调用者的事,不能在函数内完成
【函数重载overload】
一个类中多个同名函数,只要参数个数(包括参数顺序)或者参数类型不同,
重载和返回值类型没关系【内存结构】
java在启动时一共在内存中划分了五块空间来进行自已数据的存储:
栈区,堆区,方法区,本地方法区,寄存器
之所以分五个区是因为每一片内存空间中数据处理方式不一样
【局部变量】
定义在方法中变量,定义在方法参数中的变量,定义在for循环中的变量都叫局部变量
栈内存:(栈区)【凡是局部变量都在栈里边变量执行完毕栈自动释放内存,堆则垃圾回收机制
int x=3;主函数运行的时候会在栈内存中开辟一块空间,这个空间称为主函数区域,这个空间里就有一个变量x,x值为3;
如果你又调用了一个show()函数的话,就会在栈内存中在开辟一块show空间,
函数一但执行完,show空间就在栈内存中消失了,局部变量也消失了
栈内存特点:数据使用完毕,会自动释放【凡是局部变量都在栈内存里边】
堆内存(堆区):【new出来的东西(实体/对象)都在堆里边,实体包括数组和对象】
堆内存特点:堆内存中的每一个实体都有一个存放位置(二进制地址/16进制),
堆内存中的实体是用于封装数据的,而堆内存中的实体都有默认初始值
左边在栈里开避(分配)一块空间(区域);
右边在堆里分配一块空间,把这个空间的内存地址值赋给栈中的x(引用)
栈自动释放,堆垃圾回收机制【数组】
数组就是用于存取数据的一种方式,能存数据的地方我们称为容器
存放同一种类型数据的集合,可以自动给存进来的元素编号,方便操作这些元素
数组定义格式:
int [] a=new int[2];//推荐 数据不明确用这钟,2表示元素个数
int a []=new int[2];
int [] arr=new int[]{1,2,3,4,5};//这种别写长度
int [] arr={1,2,3,4,5}; //数据明确用这种
[I@de6ced [表示数组 I表示数组类型 @之后的表示内存存放地址(16进制) 全部是数组类型的引用【选择排序】
编译只检查语法错误,还没有完全建立数组,运行时才会在堆里面开辟数组空间
第一次:3和1比,大的放后面,用一个临时变量做转换;再拿0角标的1跟4去比,不用换....【冒泡排序】小的往前跑,大的往后跑
第二次:2角标位和后面的去比...
依次类推...
第一次:3和1比(角标0和1比),换位置(小的放前面),3和4比(角标1和2比),不用换,
4和6比(角标2和3比)不用换,6和2比(角标3和4比),换位置(小的放前面)
第二次:最后一位不用参加比较了;1和3比(角标0和1比),不用换,3和4比(角标1和2比),不用换,
4和2比(角标2和3比),换位置
第三次:最后两位不用参加比较了;...
【折半查找 数组必须是有序的】
找10,10和7比,10大于7,左边角标开始查找变为7的角标2+1,
找5,则右边角标结束查找变为7的角标2减1
找4,角标0+1/2得0,4>3,角标1+1=2与此5重合了,4<5再向左移,超过了右移,不能折半了就停止了
插入排序:数组必须是有序的,放入8数组仍是有序的
插入前先查找数组中有没有8,折半8>7,角标改变为min=mid+1=4,然后折半角标变为mid=(4+6)/2=5;
8和32比,8<32,max=mid-1=4,折半mid=(4+4)/2=4;8和19比,8<19,max=mid-1=3,max为3了,
min还是4,min>max了,折半不了了,这个时候返回-1,所以8放在min=4的位置;
查到有8,两个8,还是有序的,查到的8向后顺延一下,查不到8,min就是8要插入的位置
【二维数组】
int[][] arr = new int[3][4];什么时候用二维数组?
定义了名称为arr的二维数组,二维数组中有3个一维数组,3也称为二维数组的长度,每一个一维数组中有四个元素
3是二维数组的长度,4是二维数组中每一个一维数组的长度
int[][] arr = new int[3][];3是二维数组的长度必须写
比如说一个公司的消售额,因为业务人员的不同,消售额度也不同:
int[][] arr = {{3,5,1,7},{2,3,5},{6,1,8,2}}
假如公司有三个组:
第1个组四个季度的销售额结果:3(第1季度),5(第2季度),1(第3季度),7(第4季度)
数据多了我们可以存储到容器里面,可是数据之间是有关系的,我们把有关系的数据
单独放到一个组里面去;一个公司有好多个组,那就把这些组都放到公司里面去,就形
成了二维数组
- 函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
- 黑马程序员_数组、冒泡、选择、插入排序法,查找。
- Java基础——函数+数组概述+数组操作(获取最值_排序_折半查找+进制转换)
- 选择排序_冒泡排序
- 排序_冒泡排序
- 排序_插入排序
- 排序_插入排序
- 黑马程序员_C语言基础_数组之冒泡排序、快速选择排序、折半查找
- java冒泡_选择_插入三大排序
- 数组排序_查找_变长数组day06
- 选择_冒泡 排序法
- 算法_排序_插入排序
- JS语法基础_数组_冒泡排序
- 数据结构_冒泡排序
- 数据结构_冒泡排序
- 冒泡_排序
- python _ 冒泡排序
- 冒泡排序_升序
- 参与SCAU-12级网赛总结
- I/O多路复用详解
- win8 系统 OpenERP 7.0 安装指南
- 做什么事都要有风险意识
- MFC中CString转换成char数组的问题
- 函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
- 十八年开发经历小结
- nil Nil NSNull @""的区别
- 求解:潜伏
- 【实验】STL增加程序包大小
- 十八年开发经验分享(一)学习篇
- 【我当项目经理那些年】管理杂谈—三个火枪手
- DISQLite的一些优化心得
- 十八年开发经验分享(二)问题解决篇(上)