gpt4 book ai didi

c++ - 我的(基于指针的)合并排序有什么问题?

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:57 24 4
gpt4 key购买 nike

<分区>

没有错误,只是没有对列表进行排序。当我直接使用索引而不是指针时它起作用了。我觉得我错过了一些关于指针应该表现的方式......。我假设指针按值传递(复制)到递归调用中是否正确,还是我把它们弄乱了?

#include<iostream>

using namespace std;

void merge(int *start, int *pivot, int *end) {
const int n = start - end;
int ret[n];
int i;
for (i=0; i<n; ++i) {
if (*start < *pivot) {
ret[i] = *(start++);
}
else {
ret[i] = *(pivot++);
}
}
for (i=0;i<n;++i) {
start[i] = ret[i];
}
}

void sort1(int* start,int* end) {
int n = end - start;
if (n <= 1) {
return;
}
int* pivot = &start[n/2];
sort1(start,pivot);
sort1(pivot,end);
merge(start,pivot,end);
}

int main() {
int x[] = {1,3,6,2,4,5};
sort1(x,x+6);
int i;
for (i=0; i<6; ++i) {
cout << x[i] << endl;
}
}

我当前的输出是 1 1 3 3 1 1

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com