|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>//这是归并排序的迭代算法
- #include <stdlib.h>
- #define MAXSIZE 10 //注意这句
- void MergeSort(int k[], int n)
- {
- int i, next, left_min, left_max, right_min, right_max;
- int *temp = (int *)malloc(n * sizeof(int)); //还有这句,问题在下面!!!!
- for( i=1; i < n; i*=2 )
- {
- for( left_min=0; left_min < n-i; left_min = right_max )
- {
- right_min = left_max = left_min + i;
- right_max = left_max + i;
- if( right_max > n )
- {
- right_max = n;
- }
- next = 0;
- while( left_min < left_max && right_min < right_max )
- {
- if( k[left_min] < k[right_min] )
- {
- temp[next++] = k[left_min++];
- }
- else
- {
- temp[next++] = k[right_min++];
- }
- }
- while( left_min < left_max )
- {
- k[--right_min] = k[--left_max];
- }
- while( next > 0 )
- {
- k[--right_min] = temp[--next];
- }
- }
- }
- }
复制代码 为什么不直接定义一个temp[MAXSIZE]数组,而是要这样弄:int *temp = (int *)malloc(n * sizeof(int))?????这样做是多此一举吗????
|
|