01/10/2018, 14:45

Lỗi khi truyền con trỏ vào hàm Sort. Giá trị in ra bị ngẫu nhiên

 #include <stdio.h>
 #include <stdlib.h>
 void Merge(int *arr, int left,int mid, int right)
 {
 	int i =left, j= mid+1;
 	int *temp =(int*)malloc((right-left+1)*sizeof(int));
 	int m =0;
 	while(i<mid && j<right)
 	{
 		if(*(arr+i) < *(arr+j))
 		{
 			*(temp+m) = *(arr+j);
 			m++;
 			j++;
 		}else{
 			*(temp+m) = *(arr+i);
 			m++;
 			i++;
 		}	
 	}	
 	while(i<mid)
 	{
 		*(temp+m) = *(arr+i);
 		m++;
 		i++;
 	}
 	while(j<right)
 	{
 		*(temp+m) = *(arr+j);
 		m++;
 		j++;
 	}
 	int k =0;
 	for(k;k<right;k++)
 	{
 		*(arr+k) = *(temp +k);
 	}
 	free(temp);
 }
 void Sort(int *arr, int left, int right)
 {
 	if(left < right)
 	{
 		int mid = (right+left)/2;
 		Sort(arr,left,mid);
 		Sort(arr,mid+1,right);
 		Merge(arr,left,mid,right);
 	}
 }
 int main()
 {
 	int *arr = (int*)malloc(10*(sizeof(int)));
 	int i;
 	for(i=0;i<10;i++){
 		printf("Nhap a[%d] ",i);
 		scanf("%d",arr+i);
 	}
 	
 	Sort(arr,0,10);
 	
 	for(i=0;i<10;i++)
 	{
 		printf("%d",*(arr+i));
 	}
 	return 0;
 }

Khi mình chạy thì nó ra kết quả sau:

Lỗi chỗ nào các bác chỉ mình với

Bài liên quan
0