注册 登录
编程论坛 数据结构与算法

归并算法稳定性求解

魏乾坤 发布于 2011-12-14 11:19, 664 次点击
初始序列
{19 26 52 97}{8 49 66}
一次归并
while((begin1 <= end1)&&( begin2 <= end2))  
    {   
     if(array[begin1] < array[begin2])  
      { temp[k] = array[begin1];
         begin1++;
       }  

 else { temp[k] = array[begin2];  
              begin2++;
             }  
                 k++;  
            }
排序后{8 19 26 49 52 66 97}
如果将8换成19
{19 26 52 97}{19* 49 66}
因为
array[begin1] = array[begin2]
即19=19*
执行 else
排序后应为
{19* 19 26 49 52 66 97}
算法不稳定
哪里出错了?
3 回复
#2
魏乾坤2011-12-14 11:26
怎么没人回啊
#3
silent_world2011-12-14 11:59
不明白你代码的意思?
array[begin1] < array[begin2]
是什么意思?begin1和begin2又是什么意思?同一个数组的不同位存放两个数组的值?

希望尽量贴比较全面的代码。
#4
魏乾坤2011-12-14 12:34
一个array数组中,begin1和begin2分别是两个子序列的起始索引。这部分代码是一次归并的代码,如果需要全部代码,晚上我会打出来.........
1