【发布时间】:2021-03-19 12:44:43
【问题描述】:
如何更改以下排序算法以对单个数组 arr[] 进行操作?现在,我必须将元素从一个数组 arr[] 转移到 res[]。如何对 arr[] 执行所有操作? 这是我的代码:
void main(){
int arr [] = {1, 14, 5, 18, 3, 1};
int res [] = {0, 0, 0, 0, 0, 0};
int x = 0;
int y = 0;
for(int i = 0; i < 6; i++) {
x = 0;
for(int k = 0; k < 6; k++){
if(arr[k] > x){
x = arr[k];
y = k;
}
}
arr[y] = 0;
res[5 - i] = x;
}
for (int z = 0; z < 6; z++){
printf("%d ", res[z]);
}
}
【问题讨论】:
-
提示:不要只是将代码 bash 到
main,编写函数。 -
您是否要反向排序为
res?您始终可以通过反转排序比较来反转排序。 -
一个典型的 swap 被排序数组的元素。
-
搜索“就地排序算法”
-
这主要是一种选择排序,网上有 数千 个示例演示了就地算法的工作原理。