首页 > 代码库 > 归并排序
归并排序
归并排序是基于分治思想的排序,一递增排序为例:
首先将数组平分为两份,将左侧递增排序,右侧递增排序,
然后将两侧归并起来,使整体递增有序。
首先将数组平分为两份,将左侧递增排序,右侧递增排序,
然后将两侧归并起来,使整体递增有序。
示例代码如下:
#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]); } }
归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。