当前位置: 首页 > news >正文

无锡网站建设 微信北京商场购物中心

无锡网站建设 微信,北京商场购物中心,wordpress全装美恰,工业品牌设计公司文章目录 一 . 排序方法二 . 查找方法三 . 判断是否相等的方法四 . 拷贝方法五 . 填充方法 一 . 排序方法 我们第一个要介绍的就是sort方法 这个排序实现的底层逻辑应该是十分复杂的,以我们目前的水平体系应该无法理解,我们今天尝试用我们可以理解的一种排序算法,插入排序来模… 文章目录 一 . 排序方法二 . 查找方法三 . 判断是否相等的方法四 . 拷贝方法五 . 填充方法 一 . 排序方法 我们第一个要介绍的就是sort方法 这个排序实现的底层逻辑应该是十分复杂的,以我们目前的水平体系应该无法理解,我们今天尝试用我们可以理解的一种排序算法,插入排序来模拟一下这个排序的实现 public static void swap(int[] arr,int i,int j){if(i j){return;}arr[i] arr[i] ^ arr[j];arr[j] arr[i] ^ arr[j];arr[i] arr[i] ^ arr[j];}public static void insertSort(int[] arr) {if(arr null || arr.length 0){System.out.println(您的数组无法进行排序操作);return;}for (int i 1; i arr.length; i) {for(int j i; j 0; --j){if(arr[j] arr[j-1]){swap(arr,j,j-1);}}}}我们第二个要介绍的是一种局部排序的方法 我们可以看到这个方法里面有三个参数,一个是arr(待排序的数组),一个是fromIndex,一个是toIndex,也就是从什么时候开始,和从什么时候结束,值得一提的是,我们java中这种定区间的方法一般是左闭右开,所以如果fromIndextoIndex,也就是不进行数组的排序,…下面我们继续尝试用插入排序算法来模拟一下 public static void insertSortOfRange(int[] arr,int fromIndex,int toIndex){//这个是我们的限制条件if(arr null || arr.length 0){System.out.println(您的数组无法进行排序操作);return;}else if(fromIndex toIndex){System.out.println(起始位置还能比结束位置大???);return;}else if((fromIndex 0 || fromIndex arr.length)||(toIndex 0 || toIndex arr.length)){System.out.println(数组下标越界...);return;}//下面才是真正的代码实现for(int i fromIndex1; i toIndex; i){for(int j i; j fromIndex; --j){if(arr[j] arr[j-1]){swap(arr,j,j-1);}}}} public static void swap(int[] arr,int i,int j){if(i j){return;}arr[i] arr[i] ^ arr[j];arr[j] arr[i] ^ arr[j];arr[i] arr[i] ^ arr[j];}这里我们的技术可能还是不到位,不知道会不会出现什么bug 其实Arrays库里面还有好多sort方法的重载…这里也可以看出来方法重载的重要性… 其实Arrays类里面还提供了一个parallelSort方法,该方法的基本使用与sort方法是一致的,但是底层实现可能不同 下面是网上关于两种方法区别: 这是sort方法 这是parallelSort方法 范围检查方法 : 刚才我们在进行用插入排序来模拟sort方法的指定访问的时候,进行了范围的检查,实际上我们的Arrays类已经提供了一个进行范围检查的方法,如果你进行一些指定范围的原码的查看,你会发现都在调用这个方法 二 . 查找方法 我们目前的知识储备学过顺序查找,就是一个一个查找,时间复杂度为O(n),还有一个二分查找,时间复杂度是O(log2N),二分查找的效率要远大于顺序查找,我们Arrays类已经帮我们提供了一个二分查找的方法 原码其实也很简单,应该很好理解… 模拟一下 public static int binary(int[] arr,int key){int left 0;int rigth arr.length - 1;int mid;while(left rigth){mid left ((rigth - left)1);if(arr[mid] key) {left mid 1;}else if(arr[mid] key) {rigth mid - 1;}else{return mid;}}return -1;}三 . 判断是否相等的方法 这个判断是否相等的方法也就是我们要介绍的equals方法 我们来简单的分析 首先当a a2时,也就是二者引用同一块堆空间的时候,直接返回true 这个包括两者都是null的情况 其次就是如果其中一个为null,另外一个不是就返回false 然后又调用了一个方法对其他一般的情况进行判断… 下面我们来尝试模拟以下这个方法 public static boolean myEquals(int[] a,int[] a1){if(a a1){return true;}if(a null || a1 null){return false;}if(a.length ! a1.length){return false;}for(int i 0; i ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b13e01233e2645aeb5d6670b38dab582.png#pic_center)a.length; i){if(a[i] ! a1[i]){return false;}}return true;}判断局部相等的方法 这个我们就不进行模拟了… 四 . 拷贝方法 下面我们介绍两种方案来完成数组的拷贝 基础的for循环就不说了,过于基础了 基础库方法copyOf的分析: 下面是库函数的介绍 下面是函数的模拟 public static int[] myCopyOf(int[] a,int newLength){//下面是一些判断的条件if(a null){throw new RuntimeException(您的数组都没引用,咋拷贝啊);}else if(newLength 0){throw new RuntimeException(新长度还能是负数?);}int[] arrCopy new int[newLength];if(newLength a.length){for(int i 0; i newLength; i){arrCopy[i] a[i];}}else if(newLength a.length){for(int i 0; i a.length; i){arrCopy[i] a[i];}}return arrCopy;}注意,该库方法是用arraycopy方法来实现的 可以看到这个方法前面有native修饰,这就说明底层使用C/C语言来实现的 同样的这个方法也有相应的范围方法 五 . 填充方法 这个方法比较简单没什么可说的…也不用再模拟了,已经告诉你实现的方案了,同时也有指定范围填充的方法 这一节我们应该会持续的更新,再不断学习Java的过程中不断完善相关Arrays类方法的分析与总结…
http://www.hkea.cn/news/14518709/

相关文章:

  • 聊城网站建设价位金峰辉网站建设
  • 网站的管理有是网站后台开发教程
  • 校园网站怎么做HTML河北廊坊做网站
  • 盐城网站优化推广工作室营销型网站建设和规划
  • 南京企业网站设计建设厦门网页设计学校
  • 淘宝网站建设的策划书泰安房价各小区排行表
  • 苏州吴江区城市建设局网站网站建设模板研究
  • 网站建设知识库网站开发文档下载
  • 学生建设网站网站内链代码
  • 网站源码区别织梦网站如何做地区分站
  • 网站做流量的论坛贴吧云南网红景点
  • 慈溪市建设厅网站网站关键字分析
  • 网站网页建设一般多少钱做双语网站用什么cms系统好
  • 福州服务类网站建设co域名 大网站
  • 企业官方网站格式零基础如何开网店
  • 江苏省建设培训网站wordpress 无图插件
  • 百度网盘网页版优化网站排名
  • 金华网站建设设计想给学校社团做网站
  • 网站建设域名未拿到pc端设计网站
  • .net 网站域账号自动验证码国际购物网站有哪些
  • 一个公司主体可以在多个网站做备案商城建站系统
  • 网站开发项目说明书石岛网站开发
  • 柳州建设厅官方网站网页qq登录保护功能怎么关闭
  • 创建站点是什么意思上海景泰建设股份有限公司网站
  • 电子商务网站建设规划设计任务书自己做的网站百度收录
  • 门户型网站模板零起步如何做设计师
  • 网站关键词怎么优化排名大连网站制作姚喜运
  • 网站源码asp商品分销平台
  • 网站收录低广告设计与制作图片大全
  • 如何利用div做网站wordpress 备份 还原