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

团购网站前景263企业邮箱报价

团购网站前景,263企业邮箱报价,如何建设社区网站,即将上市的手机目录 什么是递归排序#xff1a; 图解#xff1a; 递归方法#xff1a; 代码实现#xff1a; 思路分析#xff1a; 非递归方法#xff1a; 思路#xff1a; 代码实现#xff1a; 思路分析#xff1a; 什么是递归排序#xff1a; 先将数据分解成诺干个序列#xff0…目录 什么是递归排序 图解 递归方法 代码实现 思路分析 非递归方法 思路 代码实现 思路分析 什么是递归排序 先将数据分解成诺干个序列将子序列合并排序得到有序的序列再与旁边子序列合并即先使每个子序列有序再使子序列段间有序。最后将两个有序表合并成⼀个有序表。 图解 递归方法 代码实现 public static void mergeSort(int[] arr) {mergeSortChild(arr,0,arr.length-1);}private static void mergeSortChild(int[] arr,int left,int right) {if(left right) {return;}int mid (left right) / 2;mergeSortChild(arr,left,mid);mergeSortChild(arr,mid 1,right);//开始合并merge(arr,left,mid,right);}private static void merge(int[] arr, int left, int mid, int right) {//临时数组int[] tmpArr new int[right - left 1];int k 0;int s1 left;int e1 mid;int s2 mid 1;int e2 right;while(s1 e1 s2 e2) {if(arr[s1] arr[s2]) {tmpArr[k] arr[s1];}else {tmpArr[k] arr[s2];}}while(s1 e1) {tmpArr[k] arr[s1];}while(s2 e2) {tmpArr[k] arr[s2];}//拷贝临时数组给到arrfor (int i 0; i k; i) {arr[i left] tmpArr[i];}} 思路分析 与快速排序类似结合上图定义一个 mid 作为 一段数据的中间下标然后依次往下分左边的新 left 和 right 为上一个段数据的 left 和 mid 右边的新 left 和 right 为上一个段数据的 mid 1 和 right。分解结束条件为 当 left 与 right 相遇了。 对于merge方法结合此图 此图是原数据的左边的一段数据定义一个临时数组把下面的两个已经有序的 一段数据合并成给到临时数组方法是s1 与 s2 比较哪个小先给到临时数组直到一方为放完。之后把没放完的一方全部给到临时数组。k就得到临时数组的元素个数。 最后通过for循环把临时数组的数据拷贝到原始数组里但是有个要注意的地方 看蓝色圈出来的区域3 9 4 2 的那段数据的 3 和 9 一段小数据如果merge方法 的for循环是这样的 for (int i 0; i k; i) {arr[i] tmpArr[i];} 那么将临时数组的数据拷贝到原始数组里会出现问题。 原始数组的 元素3 下标应该是 4如果按照从 0 下标开始  会给到原始数组 0 下标位置这样是不对的但如果加上了 left for (int i 0; i k; i) {arr[i left] tmpArr[i];} 这样就能确保 元素3 给到了 原始数组 4 下标的位置。 非递归方法 思路 上图对于8个原数据我们先把数据从 1个1个有序6和101和73和92和4一直到 2个2个 有序6   10和1   7 3   9 和 2   4 来进行排序那么最后 4个4个 有序6   10   1   7 和3   9   2   4就能完成排序了。 首先定义了 i 作为遍历数组使用l 作为 左边起始r 作为结束位置m 是 他们的中间位置。 定义一个 gap 作为 临界值初始化为1循环结束 gap 每次 乘以 2 当 gap 为 数组长度时不进入循环。 上图是 gap 为 2 的时候其他参数赋值如上图。 代码实现 public static void feidigui(int[] arr) {int gap 1;while(gap arr.length) {for (int i 0; i arr.length; i i 2*gap) {int left i;int mid left gap - 1;if(mid arr.length) {mid arr.length-1;}int right midgap;if(right arr.length) {right arr.length-1;}merge(arr,left,mid,right);}gap * 2;}}private static void merge(int[] arr, int left, int mid, int right) {//临时数组int[] tmpArr new int[right - left 1];int k 0;int s1 left;int e1 mid;int s2 mid 1;int e2 right;while(s1 e1 s2 e2) {if(arr[s1] arr[s2]) {tmpArr[k] arr[s1];}else {tmpArr[k] arr[s2];}}while(s1 e1) {tmpArr[k] arr[s1];}while(s2 e2) {tmpArr[k] arr[s2];}//拷贝临时数组给到arrfor (int i 0; i k; i) {arr[i left] tmpArr[i];}} 思路分析 结合代码和此图当 gap 为 2 时i 下一次取值为 i 2*gap确保后面的3   9   2   4也能进行有序排列。 要注意的是 过程可能会出现上面三种情况当 mid 超过了 数组长度 就越界了就要把 mid 设置为数组的最后一个位置right 同理。此过程不会影响 merge 方法的出现错误。相当于处理边界值 归并排序是稳定的。 七大算法的总结图
http://www.hkea.cn/news/14403501/

相关文章:

  • 新闻发布网站建设实训米枫网站怎么做分页
  • 做战袍网站app开发哪家好
  • 自己如何建设个网站首页wordpress安装分享插件
  • 电脑端网站和手机网站区别湖北联诺建设网站
  • 企业文化建设网站绥化供求世界在线看报
  • 做网站品牌公司搜索引擎营销的步骤
  • 南通通明建设监理有限公司网站前端开发能干到多少岁
  • 网站域名查询我要在附近找工作
  • 以下属于网站的管理 更新 维护仿站插件 wordpress
  • 网站制作加教程视频成都信用
  • 企业速成网站高端建筑企业简介
  • 建设信用卡网站微信不能分享wordpress
  • 网站主机免费申请wordpress linux密码
  • 无锡建设网站找哪家做网站三剑客
  • 建筑网站夜里几点维护html5做网站系统
  • 安徽省建设安全监督站的网站企业信息化建设如何帮助客户理解网站流量
  • 一个网站的优化怎么做移动端网站怎么布局
  • 高密营销型网站建设网站总浏览量
  • 网站编辑器失效网站地图定位怎么做
  • 17网站一起做网店东莞租房网站的财务分析表怎么做
  • 重庆网站排名优化公司做亚马逊跨境电商赚钱吗
  • 男男床上爱做 网站几百元做网站
  • 个人网站和企业网站的区别邯郸同城
  • 找个可以直接观看的网站摄影公司
  • 东方建设官方网站无锡网站建设制作方案
  • 工程网站模板制作教程网站模版 蓝色
  • 网站开发的文献建设企业网站的需要多长时间
  • 舟山网站建设seo网络推广计划书案例
  • php网站后台入口他达拉非和西地那非的区别
  • 网站流量外流wordpress主页模板