ms.c

来自「是用快速排序对一列数进行排序」· C语言 代码 · 共 60 行

C
60
字号
#include "stdio.h"
void merge(int a[],int b[],int l,int m,int r)
{
  int i=l;
  int j=m+1;
  int k=0;
  int q;
  while((i<=m)&&(j<=r))

  if(a[i]<=a[j])
     b[k++]=a[i++];
       else b[k++]=a[j++];
   if(i>m)
        for( q=j;q<=r;q++)
		 b[k++]=a[q];
	else
  
     for( q=i;q<=m;q++)
		 b[k++]=a[q];
	 
	
 
}

void copy(int a[],int b[],int l,int r)
{   
	int i=l;
	int k=0;
    while(i<=r)
	{
    a[i++]=b[k++];

	}
}

void mergeSort(int a[],int left,int right)
{

   int b[10]={0};
   if(left<right)
   {
	   
     int i=(left+right)/2;
	 mergeSort(a,left,i);
	 mergeSort(a,i+1,right);
	 merge(a,b,left,i,right);//merge two parts to b
	 copy(a,b,left,right);//copy b to a

   }
}


main()
{
	int a[10]={10,78,43,9,0,2,3,4,2,1};
     int i;
  mergeSort(a,0,9);
  for(i=0;i<10;i++)
	  printf("%d\n",a[i]);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?