前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >递归排序法—-分治排序

递归排序法—-分治排序

作者头像
摸鱼的G
发布2023-02-22 09:11:20
3580
发布2023-02-22 09:11:20
举报
文章被收录于专栏:火属性小虫
递归排序法—-分治排序

原理:

利用二分法将一组数组分成n多段只有一个元素的数组,再将数组两两组合排序

前提:

设立两个函数,一个函数用于分化数组,一个函数用于合并数组的递归

代码语言:javascript
复制
import java.io.*;
 import java.util.Arrays;
 class test  
 {
     public static int[] paixu(int[] array){
         //用于递归的结束即分化为只有一个元素的数组
         if(array.length==1){
             return array;
         }
         int middle=array.length/2;
         //利用分化函数来完成数组的左右分化
         int[] le=paixu(sor(0,middle,array));
         int[] ri=paixu(sor(middle,array.length,array));
         int i=0,j=0;
         int index=0;//这里设立了坐标变量来整合数组
         while(i<le.length&&j<ri.length){
                 array[index]=ri[j];
                 j++;
             }else{
                 array[index]=le[i];
                 i++;
             }
             index++;
         }//此时循环结束,如果没用整合完成则代表左右两个数组有一个数组已经遍历到头(while判定里有一个已经不成立的),
        //在此基础下进行分类讨论分类讨论(ps:我感觉这里是易忽视点)
         if(i<le.length){
             for(int n=i;n<le.length;n++){
                 array[index]=le[n];
                 index++;
             }
         }
         if(j<ri.length){
             for(int m=j;m<ri.length;m++){
                 array[index]=ri[m];
                 index++;
             }
         }
         return array;
     }
     //用于分化数组的函数
     public static int[] sor(int left,int right,int[] array){
         int[] result=new int[right-left];
         for(int i=0;left<right;left++,i++){
             result[i]=array[left];
         }
         return result;
     }
     public static void main (String[] args) throws java.lang.Exception
     {
         int[] m={1,9,78,5,2,3,44,65,26,78,3,6,1,2};
         int[] p=paixu(m);
         System.out.println(Arrays.toString(p));
     }
 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 递归排序法—-分治排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档