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

    归并排序算法的实现和理解

    MergeSort.c文件如下:

    #include "MergeSort.h"
    #include <stdlib.h>
    #include <string.h> //memcpy的头文件
    
    void Merge(int R[],int low, int mid, int high)//合并函数
    {
        int* R1;
        int i,j,k;
        k = 0;
        i = low;
        j = mid+1;
        R1 = (int*)malloc((high-low+1)*sizeof(int));
        while(i<=mid && j<=high)
        {
            if(R[i]<=R[j])
            {
                R1[k]=R[i];
                i++;k++;
            }
            else
            {
                R1[k]=R[j];
                j++;k++;
            }
        }
        while(i<=mid)
        {
            R1[k]=R[i];
            i++;k++;      
        }
        while(j<=high)
        {
            R1[k]=R[j];
            j++;k++;      
        }
    /*  for(k=0,i=low;i<=high;k++,i++)//能不能用memcpy代替,效率会更高
            R[i]=R1[k];
    */    
        memcpy(R+low, R1, (high-low+1)*sizeof(int));//memcpy(&R[low], R1, (high-low+1)*sizeof(int));
    
        free(R1);
    }
    
    void MergeSort(int R[], int b, int e)
    {
        if(b < e)
        {
            int m = (b + e)/2;
            MergeSort(R, b, m);
            MergeSort(R, m+1, e);
            Merge(R, b, m, e);
        }
    }

    MergeSort.h文件如下:

    #ifndef _MERGESORT_H_
    #define _MERGESORT_H_
    
    void MergeSort(int R[], int b, int e);
    
    #endif //_MERGESORT_H_

    Test.c文件如下:

    #include <stdio.h>
    #include "MergeSort.h"
    
    int main()
    {
        int i;
        int nArray[10]={1, 3, 2, 9, 4, 7, 8, 10, 6, 5};
        MergeSort(nArray, 0, sizeof(nArray)/sizeof(*nArray)-1);//后两个参数一个表示首下标,一个表示尾下标
    
        for(i=0;i<10;i++)
            printf("%d ",nArray[i]);
        printf("\n");
        return 0;
    }
  • 相关阅读:
    .net 流读取
    c#小Tip:数字格式化显示
    VS.NET优化编译速度
    Application.Run()和Form.Show()的区别
    如何利用系统函数操作文件夹及文件
    设计优秀的用户界面
    我妈过来了
    帮你免于失业的十大软件技术(转抄)
    正试图在 OS 加载程序锁内执行托管代码
    NASA World Wind
  • 原文地址:https://www.cnblogs.com/wufengv5/p/3084424.html
Copyright © 2011-2022 走看看