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

    描述

    给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中两路合并排序算法进行排序,并输出排序最后结果的相应序列。

    输入

    共两行,第一行给出排序元素数目n,第二行给出n个元素,1n100000,每个元素值范围为 [0100000] 

    输出

    一行,输出排序结果。

    样例输入

    7
    48 36 68 72 12 48 2

    样例输出

    2 12 36 48 48 68 72

     

    #include<stdio.h>
    #include<malloc.h>
    #define MaxSize 100
    
    void Merge(int source[],int start1,int end1,int start2,int end2)
    {
        int k=0;
        int i=start1;
        int j=start2;
        int m,n=0;
        int temp[100000];
        while(i<=end1&&j<=end2)
        {
            if(source[i]<=source[j])
                temp[k++]=source[i++];
            else
                temp[k++]=source[j++];
        }
        while(i<=end1)
        {
            temp[k++]=source[i++];
        }
        while(j<=end2)
        {
            temp[k++]=source[j++];
        }
    
        m=start1;
        for(;n<k;n++)
        {
            source[m++]=temp[n];
        }
    }
    
    
    void MergeSort(int source[],int start,int end)
    {
        int mid;
        if(start<end)
        {
            mid=(start+end)/2;
            MergeSort(source,start,mid);
            MergeSort(source,mid+1,end);
    
            Merge(source,start,mid,mid+1,end);
        }
    
    
    }
    
    
    void main()
    {
        int n,i=0;
        int source[100000];
        scanf("%d
    ",&n);
        while(i<n)
        {
            scanf("%d",&source[i++]);
        }
    
        MergeSort(source,0,n-1);
        for(i=0;i<n-1;i++)
        {
            printf("%d ",source[i]);
        }
        printf("%d
    ",source[n-1]);
    
    
        
    }
  • 相关阅读:
    序列点,相关知识
    6.13 关键概念
    6.9 如何选择循环
    6.8 出口条件循环:do while
    6.7 逗号运算符
    6.6 其他赋值运算符:+=、-=、*=、/=、%=
    6.3.4 新的_Bool类型
    Oracle的表导入到PowerDesigner
    PowerDesigner连接Oracle数据库
    加了日期条件后查询结果慢了100倍
  • 原文地址:https://www.cnblogs.com/rolly-yan/p/3935977.html
Copyright © 2011-2022 走看看