zoukankan      html  css  js  c++  java
  • 算法学习-递归排序

    如图,为sort()方法的过程:



    package
    javase0919; public class RecursionTest { private static int[] arr={2,56,8,6,95,45,23,15,75,6}; public static void main(String[] args) { intsort(0,arr.length-1); for(int v:arr) System.out.print(v+" "); }
      /**
       *将数组分割最小
       */
    public static void intsort(int l,int r){ if(r>l){ int n=(l+r)/2; intsort(l,n); intsort(n+1,r); sort(l,n,r); } }
    /**
     *合并两个排好序的数组
     */
    public static void sort(int l,int n,int r){ /**
          *创建两个数组,用原数组对应元素填充
          */
        
    int[] L=new int[n-l+1]; int[] R=new int[r-n]; for(int i=0;i<L.length;i++) L[i]=arr[l+i];//找到对应的数组元素 for(int j=0;j<R.length;j++) R[j]=arr[j+n+1];//找到对应数组元素 int i=0,j=0; for(int k=l;k<r;k++){ if(L[i]<=R[j]){//判断左右数组相对较小值 arr[k]=L[i];//修改原数组的值 i++; }else{ arr[k]=R[j]; j++; }
          
           /**
            *当左或右数组到达边界时,直接把另一个数组剩下的值直接赋予原数组
            */
          if(i>=L.length){
                    for(;j<R.length;j++){
                        k++;
                        arr[k]=R[j];                
                    }
                    return;
                }
            
    if(j>=R.length){ for(;i<L.length;i++){ k++; arr[k]=L[i]; } return; } } } }
  • 相关阅读:
    Zookeeper入门:基本概念、5项配置、启动
    Zookeeper入门:基本概念、5项配置、启动
    iOS-入门HelloWorld
    iOS-入门HelloWorld
    Object-C,循环语句for,while,do-while
    Object-C,循环语句for,while,do-while
    Object-C,文件路径API
    Object-C,文件路径API
    HDU 4253 Two Famous Companies
    URAL 1297 Palindrome
  • 原文地址:https://www.cnblogs.com/qingyibusi/p/5886499.html
Copyright © 2011-2022 走看看