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

    注意和快排的区别啊!!!

    #include<stdlib.h>
    #include<stdio.h>

    void Merge(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex)
    {
    int i,j,k;
    for(i=midIndex+1,j=startIndex;startIndex<=midIndex&&i<=endIndex;j++)
    if(sourceArr[startIndex]<=sourceArr[i])
    tempArr[j]=sourceArr[startIndex++];
    else
    tempArr[j]=sourceArr[i++];
    if(startIndex<=midIndex)
    for(k=0;k<=midIndex-startIndex;k++)
    tempArr[j+k]=sourceArr[startIndex+k];
    if(i<=endIndex)
    for(k=0;k<=endIndex-i;k++)
    tempArr[j+k]=sourceArr[i+k];
    for(i=startIndex;i<=endIndex;i++)
    sourceArr[i]=tempArr[i];
    }

    //内部使用递归
    void MergeSort(int sourceArr[],int tempArr[],int startIndex,int endIndex)
    {
    int midIndex;
    if(startIndex<endIndex)
    {
    midIndex=(startIndex+endIndex)/2;
    MergeSort(sourceArr,tempArr,startIndex,midIndex);
    MergeSort(sourceArr,tempArr,midIndex+1,endIndex);
    Merge(sourceArr,tempArr,startIndex,midIndex,endIndex);
    }
    }

    //调用
    int main(/*int argc,char * argv[]*/)
    {
    int a[8]={50,10,20,30,70,40,80,60};
    int b[8],i;
    MergeSort(a,b,0,7);
    for(i=0;i<8;i++)
    printf("%d ",a[i]);
    printf(" ");
    //system("pause");
    return 0;
    }

  • 相关阅读:
    NumPy:数组计算
    Matplotlib模块:绘图和可视化
    量化投资与Python
    vue-cli脚手架(框架)
    vue 之webpack打包工具的使用
    vue之node.js的简单介绍
    es6简单介绍
    ECMAScript 6 入门
    爬虫框架之Scrapy
    angular5使用httpclient时解决跨域问题
  • 原文地址:https://www.cnblogs.com/SSYYGAM/p/4212458.html
Copyright © 2011-2022 走看看