分治-归并排序1

来源:互联网 发布:超图软件股吧 编辑:程序博客网 时间:2024/05/17 00:13
#include<stdio.h>int L[100],R[100];void merge(int numbers[],int left,int mid,int right){    int n1=mid-left+1;    int n2=right-mid;    int i,j,k;        for(i=1;i<=n1;i++)L[i]=numbers[left+i-1];        for(j=1;j<=n2;j++)        R[j]=numbers[mid+j];         L[n1+1]=99999;     R[n2+1]=99999;   i=1;   j=1;          for(k=left;k<=right;k++)        if(L[i]<=R[j]){   numbers[k]=L[i];            i++;}         else{numbers[k]=R[j];j++;}printf("left is %d   right is %d  \n",left,right);for(i=0;i<8;i++){   printf( "inline_40   number[i]  is  %d\n",numbers[i]);}}void mergeSort(int numbers[],int left,int right){printf("left is %d\n",left);printf("right is %d\n",right);    if(left <right){            int mid;            mid=(right+left)/2;   mergeSort(numbers,left,mid);           mergeSort(numbers,mid+1,right);           merge(numbers,left,mid,right);}}int main(void){int numbers[]={5,2,4,6,1,3,22,36};int i=0;mergeSort(numbers,0,7);for( i=0;i<8;i++)   printf("%d    ",numbers[i]);return 0;}
使用2个 正无穷的哨兵元素
  
                                             
0 0
原创粉丝点击