第九天:排序算法和二维数组

排序算法
冒泡排序(两个相邻数据的比较)核心思想:外层循环总共要进行多少轮(arr.length-1),内层循环记录每轮数据交换次数(每轮交换次数=arr.length-进行的轮次-1)
代码实现:for(int i=0;i<arr.length-1;i++)
for(int j=0;j<arr.length-i-1;j++)

选择排序(每一轮前面的一个数与后面的数进行比较)核心思想:同冒泡排序一样,外层循环也是进行轮次(arr.length),内层循环控制交换次数。在冒泡排序中内层循环变量只是计算次数,而在选择排序中内层循环除了记录次数外还充当数组的下标。
代码实现:for(int i=0;i<arr.length-1;i++)
for(int j=i+1;j<arr.length;j++)

二分查找(针对已经排序好了的数组,且是升序):取数组第一个元素start和数组最后一个元素end,每次取中间mid=(start+end)/2,然后比较要查找的元素(分3中情况①与中间元素mid相等,②比中间元素大,此时令end=mid+1,然后再求mid③比中间元素mid小,此时令end=mid-1),判断的条件为start是否大于end,如果start大于end,则循环结束

java.utils包下的工具类Arrays(不用写复杂的算法,也能够实现一样的效果排序)
对乱序的数组进行排序:Arrays.sort(数组名)(接收时也需要用一个该类型的数组去接收)
二分查找方法:Array.binarySearch(数组名,找什么)//先通过sort排序后再查找
例:int index=Array.binarySearch(数组名,找什么)
如果输入的东西在数组中找不到返回的index就是:该数插入到数组中的位置index1,然后然index取反再减1就是index的值。如果输入的东西在数组中找到了那index就是该数组中 元素的下标
输出数组的数据:Array.toString(数组名),输出格式[1,2,3,4,]
快速赋值数组全部数据:int[] k=Arrays.copyOf(数组名,数组大小)
快速赋值数组指定范围数据:int[] k=Arrays.copyOfRange(数组名,a,b)(a到b,但是不含b)

二维数组
动态定义:数据类型【】【】 数组名 = new 数据类型【一维数组个数】【每个一维数组大小】
静态定义:数据类型【】【】 数组名 ={{对应以为数组编号},{一维数组内容}}。
arr[i].length是以为数组的长度
不规则维数组例题:
int[][] school=new int[3][];3个数组每个数组多大不确定(这种写法是对的)
int[][] school=new int[][3];错误
school[i].[0]=1;
school[i].[1]=2;当数组个数确定但是数组大小不确定时可以用这种方法来实现

需要免费的java基础视频和java企业级开发视频以及项目实战(包含SSM框架详细讲解、activiti流程引擎、springboot、springcloud视频讲解和项目实战课程)可以添加qq:1743337375

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值