这样做是多此一举吗?
#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 < k )
{
temp = k;
}
else
{
temp = k;
}
}
while( left_min < left_max )
{
k[--right_min] = k[--left_max];
}
while( next > 0 )
{
k[--right_min] = temp[--next];
}
}
}
}
为什么不直接定义一个temp数组,而是要这样弄:int *temp = (int *)malloc(n * sizeof(int))?????这样做是多此一举吗????
没仔细看代码,但是可以确定temp是固定数组成员个数的,而int *temp = (int *)malloc(n * sizeof(int))是创建一个n个成员的动态数组。可操作性和准确性,后者更好 machimilk 发表于 2014-8-26 23:56
没仔细看代码,但是可以确定temp是固定数组成员个数的,而int *temp = (int *)malloc(n * sizeof( ...
谢谢您
页:
[1]