注册 登录
编程论坛 C++教室

归并排序代码总会停止运行帮帮我

根根本根 发布于 2018-04-08 20:48, 1072 次点击
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int a[80]= {0},r[80]= {0};
int pa(int s,int t);
int main() {
    for(int i=0; i<10; i++) {
        cin>>a[i];
    }
    pa(0,9);
    for(int i=0; i<10; i++) {
        cout<<r[i];
    }
    return 0;
}
int pa(int s,int t) {

    if(s==t) {
        return 0;
    }
    int mid=ceil((s+t)/2.0);
    pa(s,mid);
    pa(mid+1,t);
    int i=s,j=mid+1,k=s;
    while(i<=mid&&j<=t) {
        if(a[i]<=a[j]) {
            r[k]=a[i];
            k++;
            i++;
        } else {
            r[k]=a[j];
            k++;
            j++;
        }
    }
    while(i<=mid) {
        r[k]=a[i];
        k++;
        i++;
    }
    while(j<=t) {
        r[k]=a[j];
        k++;
        j++;
    }
    for(int l=s; l<=t; l++) {
        a[l]=r[l];
    }
    return 0;
}
3 回复
#2
rjsp2018-04-09 08:53
这写的什么玩意儿,算了,我不多说
ceil((s+t)/2.0) 改为 (s+t)/2 试试。
#3
根根本根2018-04-18 20:40
还是不行
#4
rjsp2018-04-19 08:42
以下是引用根根本根在2018-4-18 20:40:59的发言:

还是不行
你去医院,是不是也不肯告诉医生你哪里不舒服,而是让医生猜?
你只肯说个“不行”,别人怎么知道哪里不行?

如果编译失败,贴出编译器给出的错误信息;
如果运行结果不符合你的预期,贴出你的输入、实际输出、期望的输出。

cout<<r[i]; 我猜应该改为 cout<<a[i],当然,我不知道你的意图,只是瞎猜猜。
1