zoukankan      html  css  js  c++  java
  • 归并排序

        class Program
        {
            static void Main(string[] args)
            {
                int[] arr = arrInsert(100000);
                merge_sort(arr,0,arr.Length-1);
    
            }
            static int[] arrInsert(int count)
            { 
                int[] arr=new int[count];
                Random r1=new Random();
                int i=0;
                while(i<count)
                {
                  int num=r1.Next(0,10000); 
                    arr[i]=num;
                    i++;
                }
                return arr;
            }
            static void merge(int[] arr, int L, int M, int R)
            {
                int left_size = M-L;    //左半部分数组的长度
                int right_size = R-M+1;  //右半部分数组的长度
                int[] L_arr = new int[left_size];   //声明数组
                int[] R_arr = new int[right_size];  
                int i = 0, j = 0, k = 0;
    
                for ( i = L; i < M; i++)  //数组内容
                {
                    L_arr[i - L] = arr[i];
                }
    
                for ( i = M; i <= R; i++)
                {
                    R_arr[i - M] = arr[i];
                }
                i = 0; j = 0; k = L;
                while (i < left_size && j < right_size)
                {
                    if (L_arr[i] < R_arr[j])
                    {
                        arr[k++] = L_arr[i++];
                    }
    
                    else
                    {
                        arr[k++] = R_arr[j++];
                    }
                }
    
                while (i < left_size)
                {
                    arr[k++] = L_arr[i++];
                }
    
    
                while (j < right_size)
                {
                    arr[k++] = R_arr[j++];
                }
        
            }
    
          static  void merge_sort(int[]arr, int L, int R)
          {
            if(L == R)
            {
                return;
            }      
            else
            {
                int M = (L+R)/2;
                merge_sort(arr, L, M);
                merge_sort(arr, M+1, R);
                merge(arr, L, M+1, R);
            }
        }
        
        }
  • 相关阅读:
    docker
    电商项目查询模块思路(ElasticSearch)
    Elasticsearch简单的使用步骤以及查询模块的实现
    string常用方法
    通用 Mapper常用方法
    Linux防火墙操作
    简单SQL语句
    InnoDB基础
    浅析索引
    python爬虫面试题集锦及答案
  • 原文地址:https://www.cnblogs.com/tianranhui/p/10170239.html
Copyright © 2011-2022 走看看