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

    void Merge(int sourceArr[],  int tempArr[], int startIndex, int midIndex, int endIndex)

    {
    int i = startIndex, j = midIndex+1, k = startIndex;
    while (i != midIndex + 1 && j != endIndex + 1)
    {

    /*构建新的临时数组

    依次填充较大的数字

    */
    if (sourceArr[i] > sourceArr[j])
    tempArr[k++] = sourceArr[i++];
    else
    tempArr[k++] = sourceArr[j++];
    }

    /*将数组的剩余的部分补充完整*/
    while (i != midIndex + 1) 
    tempArr[k++] = sourceArr[i++];  
    while (j != endIndex + 1)
    tempArr[k++] = sourceArr[j++];
    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 i, b[8];
    MergeSort(a, b, 0, 7);
    for (i = 0; i<8; i++)
    printf("%d ", a[i]);
    printf("\n");
    return 0;
    }

  • 相关阅读:
    观察者模式
    模版方法
    event
    设计模式之观察者模式
    BOM
    javascript基础语法&4
    Document Object Model
    javascript基础语法&3
    javaScript基础语法&1
    sublimeText3安装
  • 原文地址:https://www.cnblogs.com/qifengle/p/4921319.html
Copyright © 2011-2022 走看看