//
// main.c
// Hello
//
// Created by Arac on 15/10/21.
// Copyright © 2015年 Arac. All rights reserved.
//
#include <stdio.h>
#include <string.h>
#define ARR_SIZE 10
void merge(int* unsorted, int start, int mid, int end, int* sorted);
void merge_sort(int* unsorted, int start, int end, int* sorted);
int main(int argc, const char * argv[])
{
int orignal_array[ARR_SIZE] = {9, 6, 4, 5, 8, 2, 7, 1, 0, 3};
int operation_arr[ARR_SIZE] = {0};
memcpy(operation_arr, orignal_array, ARR_SIZE * sizeof(int));
merge_sort(orignal_array, 0, ARR_SIZE, operation_arr);
for (int index = 0; index < ARR_SIZE; ++index) {
printf("%d ", operation_arr[index]);
}
printf("\n");
return 0;
}
void merge(int* unsorted, int start, int mid, int end, int* sorted)
{
int i = start, j = mid;
int k = 0;
while (i < mid && j < end)
if (unsorted[i] < unsorted[j])
sorted[k++] = unsorted[i++];
else
sorted[k++] = unsorted[j++];
while (i < mid)
sorted[k++] = unsorted[i++];
while (j < end)
sorted[k++] = unsorted[j++];
for (int v = 0; v < k; v++)
unsorted[start + v] = sorted[v];
}
void merge_sort(int* unsorted, int start, int end, int* sorted)
{
if (start + 1 < end)
{
int mid = (start + end) / 2;
merge_sort(unsorted, start, mid, sorted);
merge_sort(unsorted, mid, end, sorted);
merge(unsorted, start, mid, end, sorted);
}
}i-s
最新推荐文章于 2024-12-30 16:57:50 发布

4305

被折叠的 条评论
为什么被折叠?



