Đây là đoạn code mergesort , nhưng không hiểu sao nó không chạy được, mọi người kiểm tra lỗi giúp mình với.
C++ Code:
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define n 10
  4. void merge(int a[],int first,int mid,int last){
  5.     int first1 = first;
  6.     int first2 = mid + 1;
  7.     int last1 = mid;
  8.     int last2 = last;
  9.     int index = first;
  10.     int tempA[n];
  11.     int i,j;
  12.     for(;(first1<=last1) && (first2 <= last2); index++){
  13.         printf("\n check");
  14.         if(a[first1]<a[first2]){
  15.             tempA[index]= a[first1];
  16.             first1++;
  17.             printf("\n truong hop 1");
  18.         }
  19.         else{
  20.             tempA[index]= a[first2];
  21.             first2++;
  22.             printf("\n Truong hop 2");
  23.         }
  24.     }
  25.         for(first1<=last1;first1++;index++)
  26.         tempA[index] = a[first1];
  27.         printf("\n loai 1");
  28.         for(first2<=last2;first2++;index++)
  29.         tempA[index] = a[first2];
  30.         printf("\n loai 2");
  31.         for(index = first;index <=last;index++)
  32.         a[index]=tempA[index];
  33.         printf("\n loai 3");       
  34.    
  35. }
  36. void mergesort(int a[],int first,int last){
  37.     if(first<last){
  38.         printf("\n asdlkf");
  39.         int mid= (first + last )/2;
  40.         mergesort(a,first,mid);
  41.         mergesort(a,mid+1,last);
  42.         merge(a,first,mid,last);
  43.        
  44.     }
  45. }
  46. int main(){
  47.     int a[n],i;
  48.     for(i=0;i<n;i++){
  49.         printf("\n Nhap phan tu thu %d: ",i+1);
  50.         scanf("%d",&a[i]);
  51.     }
  52.     printf("\n Bat dau sap xep");
  53.     mergesort(a,0,n-1);
  54.     printf("\n Ket thuc sap xep");
  55.     for(i=0;i<n;i++)
  56.     printf("\n a[%d] = %d ",i,a[i]);
  57.     getch();
  58.     return 0;
  59. }