版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdn_kou/article/details/82459010
文章没有解释和代码注释,代码经改进,做成了好理解,关键是好记忆的方式进行书写。用于自己进行查阅
#include <stdio.h>
#include <string.h>
void merge(int arr1[],int left ,int mid ,int right)
{
int arr2[8];
int i = left ;
int j = mid + 1;
int t = 0;
while( i <= mid && j <= right ){
if(arr1[i] < arr1[j]){
arr2[t++] = arr1[i++];
}else
{
arr2[t++] = arr1[j++];
}
}
while( i <= mid ){
arr2[t++] = arr1[i++];
}
while( j <= right){
arr2[t++] = arr1[j++];
}
t = 0;
while(left <= right){
arr1[left++]= arr2[t++];
}
}
void sort(int arr1[],int left ,int right)
{
if ( left < right ){
int mid = (left + right)/2;
sort(arr1,left,mid );
sort(arr1,mid + 1,right);
merge(arr1,left ,mid ,right);
}
}
int main()
{
int arr1[8] = {9,2,5,1,6,4,3,7 };
sort(arr1,0,7);
int i = 0;
for(;i < 8; i++){
printf("%d ",arr1[i]);
}
printf("\n");
return 0;
}