文章没有解释和代码注释,代码经改进,做成了好理解,关键是好记忆的方式进行书写。用于自己进行查阅
#include <stdio.h>
void merge(int arr1[],int left ,int mid ,int right)
{
int temp[sizeof(arr1)];
int i = left ;
int j = mid + 1;
int t = 0;
while( i <= mid && j <= right ){
if(arr1[i] < arr1[j])
temp[t++] = arr1[i++];
else
temp[t++] = arr1[j++];
}
while( i <= mid )
temp[t++] = arr1[i++];
while( j <= right)
temp[t++] = arr1[j++];
t = 0;
while(left <= right)
arr1[left++]= temp[t++];
}
void sort(int arr[],int left ,int right)
{
if ( left < right ){
int mid = left + (right - left) /2;
sort(arr,left,mid );
sort(arr,mid + 1,right);
merge(arr,left ,mid ,right);
}
}
int main()
{
int arr[8] = {9,2,5,1,6,4,3,7 };
sort(arr,0,7);
int i = 0;
for(;i < 8; i++){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
看不懂,过来找我,当面解释,三两句就说完了