gpt4 book ai didi

C - 如何在排序时不更改 int 数组的值

转载 作者:行者123 更新时间:2023-12-02 07:23:40 25 4
gpt4 key购买 nike

我是 C 编程的新手,想知道是否有一种方法可以防止更改数组的值。

我有一个数组:

int *array = makeArray();

然后我对这个数组应用排序方法:

sortingMethod1(array);

当我打电话时:

sortingMethod2(array);

列表已经排序,我无法对第二种排序方法进行基准测试。

我想知道是否有一种方法可以将同一个数组传递给两个函数,而无需为下一个函数对其进行排序。

如果有人能帮助我解决这个看似非常简单的问题,我将不胜感激。

最佳答案

如果排序方法就地对数组进行排序,您将需要向它们发送数组的副本。为避免代码重复,最好将复制提取到实用函数中:

void benchmark(int *array, size_t array_len, void (*method)(int *)) {
int *array_copy = malloc(array_len * sizeof(int));
memcpy(array_copy, array, array_len * sizeof(int));

/* you can initialize a timer here */
method(array_copy);
/* you can output elapsed time here */

free(array_copy);
}

// ...
int *array = makeArray();
benchmark(array, array_len, sortingMethod1);
benchmark(array, array_len, sortingMethod2);

关于C - 如何在排序时不更改 int 数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899902/

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