#include<stdio.h>
void merge(int r[], int s[], int x1, int x2, int x3);
void mergesort(int r[], int s[], int m, int n);
int main(void)
{
int a[11];
int i;
printf("請輸入10個數:\n");
for(i = 1; i <= 10; i++){
scanf("%d", &a[i]);
}
mergesort(a, a, 1, 10);
printf("排序后的順序是:\n");
for(i = 1; i <= 10; i++){
printf("%5d", a[i]);
}
printf("\n");
return 0;
}
void merge(int r[], int s[], int x1, int x2, int x3)
{
int i, j, k;
i = x1;
j = x2 + 1;
k = x1;
while((i <= x2) && (j <= x3)){
if(r[i] <= r[j]){
s[k] = r[i];
i++;
k++;
}
else{
s[k] = r[j];
j++;
k++;
}
while(i <= x2){
s[k++] = r[i++];
}
while(j <= x3){
s[k++] = r[j++];
}
}
}
void mergesort(int r[], int s[], int m, int n)
{
int p;
int t[20];
if(m == n){
s[m] = r[m];
}
else{
p = (m + n) / 2;
mergesort(r, t, m, p);
mergesort(r, t, p + 1, n);
merge(t, s, m, p, n);
}
}
請各位大神幫幫忙,這是歸并排序,可是運行的結果并不對,困擾了我兩個小時,拜托拜托
uj5u.com熱心網友回復:
https://blog.csdn.net/k_koris/article/details/80508543供參考~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91615.html
標籤:C語言
上一篇:回傳值為null 的一個小問題
