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