我必须制作一个程序,要求用户输入一个10
元素数组,其数字从0
到9
。
然后将数组发送到该函数。此函数将按如下方式对数组中的每个数字进行排序:
我不知道如何重新定位数字。
答案 0 :(得分:0)
这是我的实施 Joel Gregory的评论:
此函数创建一个未编辑的数组,将原始内容复制到该数组,然后从第一个索引循环到最后一个。它将用作检查索引的任何匹配的基础。
在每次迭代中,如果未编辑的元素中的任何元素与索引号匹配,则该函数将搜索未编辑的数组。如果是,则将初始值替换为索引值。否则,分配零。依此类推,直到最后一个索引。
void swap(int *original, int max_elements) {
int index = 0, matcher = 0, unedited[max_elements];
// copies original to unedited
memcpy(unedited, original, max_elements * sizeof(int));
for (--index; ++index < max_elements; ) {
// searches the original array for matches with the current index
// loops until it finds a match or it reaches the maximum number of elements
for (matcher = 0; unedited[matcher] != index && ++matcher < max_elements;);
// if there is match, the initial value is changed with it's index value, else zero is the new value.
original[index] = (matcher != max_elements) ? index : 0;
}
}
<强>输出:强>
Original: 1 1 7 8 2 8 1 6 3 2
Sorted: 0 1 2 3 0 0 6 7 8 0