zoukankan      html  css  js  c++  java
  • pat每日刷题计划--day72

    归并排序模板

    mergeSort是归并排序,merge负责将两组数组合并

    需要注意的是,在新的数组往a里面赋值的过程中,不一定是从0开始赋值的嗷。因为在归并中两个数组占位连续的,真实的起始位置是l1(因为中途变了,要有一个变量标记)

    while里面别忘了l1,l2++

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    void merge(int a[],int l1,int r1,int l2,int r2)
    {
        int temp[1000];
        int num=0;
        int start=l1;
        while(l1<=r1 && l2<=r2)
        {
            if(a[l1]<=a[l2])
                temp[num++]=a[l1++];
            else
                temp[num++]=a[l2++];
        }
        while(l1<=r1)
            temp[num++]=a[l1++];
        while(l2<=r2)
            temp[num++]=a[l2++];
        for(int i=0;i<num;i++)
            a[start+i]=temp[i];
    }
    void mergeSort(int a[],int left,int right)
    {
        if(left==right) return;
        int mid=(left+right)/2;
        if(left==right) return;
        mergeSort(a,left,mid);
        mergeSort(a,mid+1,right);
        merge(a,left,mid,mid+1,right);
    }
    int main()
    {
        int a[10]={66,12,33,57,64,27,18};
        mergeSort(a,0,6);
        for(int i=0;i<=6;i++)
            printf("%d ",a[i]);
        return 0;
    }
    View Code
    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    MongoDB的固定集合
    MongoDB的导入导出
    MongoDB的数据备份与恢复
    MongoDB的索引
    MongoDB简单CRUD场景
    MongoDB入门
    NOSQL概念入门
    Java静态代理和动态代理
    a=a+1背后的内存模型和CPU高速缓存
    SpringCloud的学习记录(6)
  • 原文地址:https://www.cnblogs.com/tingxilin/p/12247295.html
Copyright © 2011-2022 走看看