所以我试图写这个函数的输入参数数组将被采取和复制到另一个数组,但以排序的方式。例如:输入参数3, 1, 9, 8
将复制到目标数组1, 3, 8, 9
中。排序一个数组到另一个 - C
这是我迄今为止的,但它只复制每次最小的元素。我正在寻找一种方法来将每次通过时发现的最小值“列入黑名单”。
void sort_another_array(int *param, int *target, int size){
int i, j, lowest = param[0];
for(i = 0; i < size; i++){
for(j = 0; j < size; j++){
if(param[j] < lowest){
lowest = param[j]
}
}
target[i] = lowest;
}
}
当然我也已经发现了最低值的另一个数组但是这更多不必要的循环和检查,并增加了本已可怕的N^2的复杂性。有没有更简单的方法来做到这一点?
我完全新的C,所以请不要将其限制为逻辑语句的简单编程概念,使用一些标志变量等。
为什么不复制数组,然后用你选择的算法对新数组进行就地排序:https://en.wikipedia.org/wiki/Sorting_algorithm#Comparison_of_algorithms? –
我曾考虑过这个问题,但后来我一直坚持原来的想法,想看看我是否可以开放它。这就像现在的痒,我希望看到一个解决方案,如果只是为了我的理智的缘故。 –
看起来你正在尝试实现[选择排序](https://en.wikipedia.org/wiki/Selection_sort)。事实证明,选择排序实际上更容易实现,就像该文章所示。 – kaylum