第四天

001数组(常见操作)

【】定义数组的两种格式

int[] arr=new int[5];

int[] arr={1,2,3,4,5};

 

【】角标最高位是数组长度减一(角标<arr.length),异常编译器不会发现执行时才在内存开辟空间被查出

【】arr变量值为空null,不指向数组,就会出异常

 【】获取数组的元素,一般遍历获取

for循环遍历

 引入数组长度来优化遍历

 

【】数组求和:变量+循环

 

 【】定义功能

 优化:最后一个元素后面没有逗号,则将最后一个用if语句修改并加上换行

优化,加上中括号,在最前面打印上,最后面打印上

 【】直接打印数组名,打印的是数组实体的引用,是哈希算法算出来的哈希值,

 【代表数组

I代表数组数据类型

@

@右侧,数组内存存放地址,是十六进制的数

【】求数组最大值:设一个变量存储,其他不断和这个存储器比较

【】获取最小值也是这个思路

【【】实质上属于片难怪写法

 
002数组(排序与折半查找)

【】函数里面的参数a,接受主函数传来的具体值arr,在函数里面进行运算

【】实际a也指向数组,并操作数组,所以arr指向的堆已经发生变化,无需返回值,所以方法类型void

 

【】选择排序思想:第一个和后面的每个逐个比较,每次都是小的被互换到最前面,然后第二个和后面的比较,逐个进行

【】五个组;每个组是x驱动,系列内部为y驱动;每一位相当于行for外循环,都和后面的比较相当于for内循环的列

【】比较是和其后面的每个,所以行角标为x时,则列角标y初始值为y=x+1

【】替换replace模型:设置一个临时变量存储来辅助替换

【】x<length,就是说最后一个array【length-1】,就是每一个都依序参与比较;到这后y=x+1=length下一步下雨length而循环结束

也可以<length-1,最后一个也没有后面的元素可以比较了

【】y负责具体的比较方案

 

【】选择排序=逐个比较+遇小互换

 【】冒泡排序

 

【】相邻比较+遇小互换

【】每次排序完成,最大值都排去最后一位

冒泡排序难题

1在于一共比较几组:实际上比较length-1组,所以下标从0到length-2,所以int=0;x<arr.length-1;

2在于每次比较的元素结尾在变化自减,应该是一个变量。可以单独设变量int z=1;也可以用x来替代这个变量;

【】冒泡排序可以先做出个样子,再进行优化

【】写完之后,按照流程走一遍,然后按照实际流程进行修正

【】最快的排序是希尔排序

【】排序都会有一个换位置的过程

【】数组查找操作:遍历法

【】输出:整数型数字,输入数组名与关键数字;

也可以从后往前遍历,找最后出现的序号

【】折半查找

1就是mid通过min与max确定,之后不断收紧mid活动范围来让mid接近标的

2得出mid后如果标的比mid大,就将mid加一处变成新的min;得出mid后如果标的比mid小,就将mid减一处变成新的max

3最后min与max并列,mid将在min上,如果仍不相等,max会最后小于min,则证明标的不存在

【】变成就是将一套顺序流程用代码形式如实运转,代码运行就是重现流程运行,流程运行应该和代码运行一样

【】一套递加的数组,首先确定最大序号,最小序号,之后算出中间序号,看看中间序号的数值和目标值是否一样,

一样就结束,不一样如果目标值比中间序号大则移动min到mid右边位置如果小则,形成新min与max在算出mid,再比较目标值与mid代表值,直到找到,返回mid序号,或则最终找不到而形成min大于max情况,返回-1结束

不是遍历插入,而是折半插入

【】查找这个值的位置,或者不存在但min

 
003数组(十进制与查表法)

【】十进制转二进制:与操作+移位+查表法---因为十进制数字在计算机到底是二进制存储形式

【】十进制转16进制:与操作+移位+查表法

【】第一版把对2取模的数都打印出来

【】取模和除二去掉余数配合使用

【】第二版:添加一个存数据的容器,可以存储模后数据,有一个功能倒序打印,这样就能打出二进制来

 【】十进制转成16进制,可以靠取模,也可以与0001111做与操作取后四位,然后转成一位十六进制,然后再右移四位,再与操作取后四位

 

 先对数字做与操作获取后四位,再收取这四位,然后右移四位,再与操作,从这里就开始了循环,32位,循环8次

【】顺序打印

 

 【】减十加a太麻烦,可以使用查表法

【】先把0-f元素存到表里,角标与元素有 一一对应关系,直接查表找元素

 第一版:打印出16进制表达

 第二版

 【】新数组存储

 【】遍历时逆序遍历打印,并print后去掉ln不换行

 

【】第三版

【】 结果顺序,但前面还有零太多余,想要去掉,

原理是最初的数字不断右移,移到剩下的全是零,就是num=0,之后不再录入即可

 所以把for循环替换为while(num!=0)但此时需要有个变量来代替x,就需要重新定变量

打印的时候从尾部打印会把其余元素都打印,可以从有效部位开始打印,就是pos最后的数字处开始向前打印,那就纸打印有效位

 

 【】第四版

打算把数组倒着存,这样二进制最后四位正好落入数组最后部分,数组存的就是正确的数值了

【】更改角标变量pos为终点值,打印时正着打印

 

 

 【】查表法:十进制转为二进制

 【】一旦出现return就宣告函数结束,那么循环也就结束

 
004进制转换和二维数表
 【】十进制转化为2、16进制有共性的东西,归纳出一个方法,其他方法调用它
 

 

 

 

 

 

二维数表就是栈内存变量arr存数组地址,指向数组;数组里面元素存储的是另一个数组的地址,

arr【0】指向另一个地址的数组

【】定义二维数组的另一方法

【】将二维数组里元素都加起来

 
posted @ 2025-02-28 21:22  ibddindonon  阅读(7)  评论(0)    收藏  举报