达内-----二维数组和各种排序
******************先把昨天的作业解决掉******************
a) 写一个彩票的生成代码.
i. 要求
1. 1-33随机选7个无重复的数字(即用数组保存7个数字,所有数字与其下标以前的数字比较,如果有重复的,重新生成).
2. 测试方法用1-8随机选7个.
*********************这是今天的内容*********************
1 1 2 3 5 8 13 ………….费氏数列
f(n)=f(n-1)+f(n-2) (n>2)
f(n)=1 (0<n<3)
计算数列的第n项值?
数组拷贝
******************************分隔线******************************
数组排序
由大到小 降序
由小到大 升序(强调)
冒泡排序/选择排序/插入排序/快速排序.
冒泡排序:
相邻两个就行比较,如果前面大于后面,交换位置,如:
3,5,7,6,4,8,2,1à3,5,6,4,7,2,1,8à…进行7次后…à1,2,3,4,5,6,7,8
选择排序(作业):
记录最小的数的下标,与第一个数字交换.后n-1个依次交换….
插入排序(作业):
拿第一个数做一个小的数组,然后把第二个数插入进来,然后插入第三个数….直到n-1个
快速排序(常用):
先找一个参照元素(随意),然后把所有比参照小的放在参照前,同时把所有比参照大的放在参照的后面.把数组分成了3部分:比参照小的,参照元素和比笔参照大的三个部分.然后递归处理比参照小的和比参照大的部分
49,67,76,13,15,27
i=1,j=6(n)
从j开始找,比参照小的数字,找到了交换(j=数字所在的位置-1)
27,67,76,13,15,49 (i=1,j=5)
从i开始找比参照大的数字,找到了交换(i=数字+1)
27,49,76,13,15,67 (i=3,j=5)
重复1,2
27,15,76,13,49,57 (i=3,j=4)
27,15,49,13,76,67 (j=3,j=3)
27,15,13,49,76,67
******************************分隔线******************************
平衡二叉树是只层数差不超过2层,即为平衡二叉树,小的放左边,大的在右边,相等的无法放入平衡二叉树,注意,要从层数差上判断是否为二叉树.
最多用到二维数组
由一维数组组成的数组叫二维数组.
二维数组的数组元素就是一维数组
格式:
int[][] arr=new int[一维数组的个数][一维数组的元素个数];
for(;;){
for(;;){
}
}
arr 代表二维数组
arr[0] 代表二维数组的第一个元素(一维数组)
arr[i][j] 代表int,第i+1个一维数组里的第j+1个元素.
i 一维数组在二维数组的下标
j 数据在一维数组的下标
******************************分隔线******************************
作业:
1. 今天笔记看一遍,理解.
2. 编程题:
a) 笔记里的选择排序和插入排序
b) 编写五子棋游戏,
i. 注意:取输入坐标时,用String
ii. String in=sc.next();
iii. char c1=in.charAt(0);
iv. char c2=in.charAt(1);
******************************分隔线******************************
好吧,今晚又到2点才睡-_-|||快要变熊猫了

浙公网安备 33010602011771号