函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组

来源:互联网 发布: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季度)
数据多了我们可以存储到容器里面,可是数据之间是有关系的,我们把有关系的数据
单独放到一个组里面去;一个公司有好多个组,那就把这些组都放到公司里面去,就形
成了二维数组
原创粉丝点击