C 언어 분 치 법 은 병합 정렬 을 실현 한다.

본 논문 의 사례 는 C 언어 가 병합 순 서 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
병합 정렬 의 기본 사상:
두 개 와 그 이상 의 질서 표를 하나의 질서 표 로 합 쳐 정렬 대기 서열 을 분 치 법 을 통 해 몇 개의 질서 있 는 하위 서열 로 나 눈 다음 에 두 개의 하위 서열 을 하나의 하위 서열 로 합 친 다음 에 여러 번 합 친 후에 질서 있 는 표 로 통합 시킨다.
정렬 과정 그림:

코드 는 다음 과 같 습 니 다:

#include "stdio.h"
#define MAX 100
int is1[MAX],is2[MAX];//   is1,      is2
void merge(int low,int mid,int high){
  int i=low,j=mid+1,k=low;
  while(i<=mid&&j<=high)
    if(is1[i]<is1[j])
      is2[k++]=is1[i++];
    else
      is2[k++]=is1[j++];
  while(i<=mid)
    is2[k++]=is1[i++];
  while (j<=high)
    is2[k++]=is1[j++];
  for ( i = low; i <=high ; i++) {
    is1[i]=is2[i];
    printf("%5d",is1[i]);
  }
  printf("
"); } void mergeSort(int a, int b){ if(a<b){ int mid=(a+b)/2; mergeSort(a,mid); mergeSort(mid+1,b); merge(a,mid,b); } } void main(){ int i,n; printf(" :"); scanf("%d",&n); printf(" :
"); for ( i = 1; i <=n ; ++i) { scanf("%d",&is1[i]); } mergeSort(1,n); printf(" :
"); for ( i = 1; i <=n ; ++i) { printf("%4d",is1[i]); } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기