#include<stdio.h>
//合并算法
void merging(int *array1, int array1_size, int *array2, int array2_size){
int temp[10]; //临时存放传进来的两个数组
int i = 0, j = 0, k = 0;
while(i<array1_size&&j<array2_size){
if(array1[i]<=array2[j]){ //把较小的取出来放到temp中
temp[k++] = array1[i++];
} else{
temp[k++] = array2[j++];
}
}
while(i<array1_size){
temp[k++] = array1[i++];
}
while(j<array2_size){
temp[k++] = array2[j++];
}
while(k--){
array1[k] = temp[k];
}
}
void mergeSort(int array[], int n){
int *array1 = array;
int array1_size = n/2;
int *array2 = array+array1_size;
int array2_size = n-array1_size;
if(n>1){ //递归调用 没什么好说的
mergeSort(array1, array1_size);
mergeSort(array2, array2_size);
}
merging(array1, array1_size, array2, array2_size);
}
void main(){
int array[] = {9,8,7,6,5,4,3,2,1};
int i = 0;
mergeSort(array,sizeof(array)/sizeof(int));
for(i = 0; i<sizeof(array)/sizeof(int); i++){
printf("%d", array[i]);
}
}
//合并算法
void merging(int *array1, int array1_size, int *array2, int array2_size){
int temp[10]; //临时存放传进来的两个数组
int i = 0, j = 0, k = 0;
while(i<array1_size&&j<array2_size){
if(array1[i]<=array2[j]){ //把较小的取出来放到temp中
temp[k++] = array1[i++];
} else{
temp[k++] = array2[j++];
}
}
while(i<array1_size){
temp[k++] = array1[i++];
}
while(j<array2_size){
temp[k++] = array2[j++];
}
while(k--){
array1[k] = temp[k];
}
}
void mergeSort(int array[], int n){
int *array1 = array;
int array1_size = n/2;
int *array2 = array+array1_size;
int array2_size = n-array1_size;
if(n>1){ //递归调用 没什么好说的
mergeSort(array1, array1_size);
mergeSort(array2, array2_size);
}
merging(array1, array1_size, array2, array2_size);
}
void main(){
int array[] = {9,8,7,6,5,4,3,2,1};
int i = 0;
mergeSort(array,sizeof(array)/sizeof(int));
for(i = 0; i<sizeof(array)/sizeof(int); i++){
printf("%d", array[i]);
}
}