[問題] merge sort寫不對
遇到的問題: (題意請描述清楚)
使用者輸入十個整數
讓電腦用merge sort去排序由小到大
希望得到的正確結果:
小~大
程式跑出來的錯誤結果:
一堆很大的數
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
dev c++
有問題的code: (請善用置底文標色功能)
void mergesort(int list[],int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
mergesort(list,low,mid);
mergesort(list,mid+1,high);
int temp[high];
int i,j,k;
i=low; j=mid+1; k=low;
while(i<=mid && j<=high)
{
if(list[i]<list[j])
{
temp[k]=list[i];
i++;
}
else
{
temp[k]=list[j];
j++;
}
}
===================上面都是課本有的
下面課本只提供虛擬碼 不知到哪邊寫錯了
if(i>mid)
{
while(j<=high)
{
temp[k]=list[j];
j++;k++;
}
}
else
while(i<=mid)
{
temp[k]=list[i];
i++;k++;
}
while(low<=high)
{
list[low]=temp[low];
low++;
}
printf("這次排序後為 :");
int m;
for( m=0;m<10;m++)
printf("%d,",list[m]);
}
}
補上課本的虛擬碼
if ( i > mid )
move S[j] through S[high] to U[k] through U[high]
else
move S[i] through S[mid] to U[k] through U[high]
move U[low] through U[high] to S[low] through S[high]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.77.253.108
推
04/12 17:35, , 1F
04/12 17:35, 1F
→
04/12 17:35, , 2F
04/12 17:35, 2F
→
04/12 17:36, , 3F
04/12 17:36, 3F
推
04/12 17:48, , 4F
04/12 17:48, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章