C实现方法经典算法之归并排序
发布时间:2020-12-16 07:45:42 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 // =====================【归并排序】==================#include stdio.h#include stdlib.h#include time.h#include math.h#define NUM 20int arr[N
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 // =====================【归并排序】================== #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #define NUM 20 int arr[NUM] = { 0 }; int arr_temp1[NUM] = { 0 }; int arr_temp2[NUM] = { 0 }; void init() { time_t tm; time(&tm); srand((unsigned int)tm); int max_item = 100; for (int i = 0; i != NUM; i++) arr[i] = rand() % max_item; } void display(int * arr) { for (int i = 0; i != NUM; i++) printf("%-10d",arr[i]); printf("n"); } void merge(int low,int mid,int high) { for (int ii = 0; ii != mid + 1 - low; ii++) { arr_temp1[ii] = arr[low + ii]; } arr_temp1[mid + 1 - low] = INT_MAX; for (int ii = 0; ii != high - mid; ii++) { arr_temp2[ii] = arr[mid + 1 + ii]; } arr_temp2[high - mid] = INT_MAX; int i = 0; int j = 0; for (int k = low; k != high + 1; k++) { if (arr_temp1[i] < arr_temp2[j]) arr[k] = arr_temp1[i++]; else arr[k] = arr_temp2[j++]; } } void mergeSort(int low,int high) { if (low >= high) return; int mid = (low + high) / 2; mergeSort(low,mid); mergeSort(mid + 1,high); merge(low,mid,high); } void main() { init(); printf("归并排序前n"); display(arr); mergeSort(0,NUM - 1); printf("归并排序后n"); display(arr); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |