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

    归并排序重在“归并”一词,即先递归分解数组,再合并数组的过程。

    #include<stdio.h>
    
    void heBin(int a[] , int first , int mid , int last)    {   // 合并数组的左边和右边 
        int *temp = new int[last - first + 2] ;
        int i = first , j = mid+1 , k = 0 ;
        for( ; i <= mid && j <= last ;)    {
            if(a[i] <= a[j])
                temp[k++] = a[i++] ;
            else
                temp[k++] = a[j++] ;
        }
        for(; i <= mid ; i++)
            temp[k++] = a[i] ;
        for(; j <= last ; j++)
            temp[k++] = a[j] ;
        for(i = 0 ; i < k ; i++)
            a[first+i] = temp[i] ;
        delete[] temp ;
    } 
    
    void mergesort(int a[] , int first , int last)    {   // 递归分解数组 
        if(first < last)    {                            // 如果数组还能再次分解 
            int mid = (first + last) / 2 ;                
            mergesort(a,first,mid) ;                    // 分解出左边 
            mergesort(a,mid+1,last) ;                    // 分解出右边     
            heBin(a,first,mid,last) ;                    // 左边和右边合并 
        }
    }
    
    int main()    {
        int a[] = {9,6,3,8,5,2,7,4,1,0} ;
        mergesort(a,0,9) ;
        for(int i = 0 ; i < 9 ; i++)
            printf("%d ",a[i]) ;
        printf("
    ") ;
        return 0 ; 
    }
  • 相关阅读:
    Lc169_多数元素
    Lc461_汉明距离
    有返回值的多线程
    Lc344_反转字符串
    Lc709_转换成小写字母
    Lc1436_旅行终点站
    Spring 注解回顾
    SpringCloud网关之Zuul
    SpringCloud注册中心之Zookeeper
    SpringCloud服务安全之hystrix
  • 原文地址:https://www.cnblogs.com/scottdinggo/p/4431279.html
Copyright © 2011-2022 走看看