zoukankan      html  css  js  c++  java
  • 归并排序 分类: 算法 2014-10-10 11:11 495人阅读 评论(0) 收藏

    归并排序是基于分治思想的排序,一递增排序为例:
    首先将数组平分为两份,将左侧递增排序,右侧递增排序,
    然后将两侧归并起来,使整体递增有序。

    示例代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    #define Elemtype int
    Elemtype *B;
    void merge(Elemtype A[],int low,int mid,int high)
    {
    	
    	for(int i=low;i<=high;i++)
    	{
    		B[i]=A[i];
    	}
    	int i=low,j=mid+1;
    	int k=low;
    	while(i<=mid&&j<=high)
    	{
    		if(B[i]<B[j])
    		{
    			A[k++]=B[i++];
    		}
    		else
    		{
    			A[k++]=B[j++];
    		}
    	}
    	while(i<=mid)A[k++]=B[i++];
    	while(j<=high)A[k++]=B[j++];
    
    }
    void mergesort(Elemtype A[],int low,int high)
    {
    	int mid=(low+high)/2;
    	if(low<high)
    	{
    		mergesort(A,low,mid);
    		mergesort(A,mid+1,high);
    		merge(A,low,mid,high);
    	}
    }
    int main()
    {
    	Elemtype A[12]={1,3,24,55,43,28,2,3,5,6,6,54};
    	B=(Elemtype*)malloc(sizeof(Elemtype)*12);
    	mergesort(A,0,11);
    	for(int i=0;i<12;i++)
    	{
    		printf("%d ",A[i]);
    	}
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    错误处理
    触发器
    存储过程
    用户自定义函数
    动态 SQL
    临时表
    游标
    流程控制元素
    锁定和阻塞
    Spring内置事件以及自定义事件
  • 原文地址:https://www.cnblogs.com/luo-peng/p/4646240.html
Copyright © 2011-2022 走看看