gpt4 book ai didi

c - 我写了这段代码用于选择排序,但它什么也没做

转载 作者:行者123 更新时间:2023-11-30 20:32:27 25 4
gpt4 key购买 nike

#include<stdio.h>


void swap(int a[60],int p, int min){
int temp;
if (min!=p){
temp= a[p];
a[p]=a[min];
a[min]=temp;
}
return;
}

void selection(int a[60]){
int p=0;
do {
int min = p;
for ( int i=p+1;i<60;i++){
if(a[min]>a[p])min=p;

}
swap(a,p,min);
p++;
} while(p<60);
}




int main(){
int a[60];
int p=0;
while(p<60){
scanf("%d\n",&a[p]);
p++;
}
selection(a);
p=0;
while(p<60){
printf("%d\n",a[p]);
p++;
}

return 0;
}
  1. 在 main 中,第一个函数从标准输入扫描 60 大小的数组。
  2. 调用上面定义的选择函数,它“应该”对数组进行排序
  3. 选择函数定义变量 p 能够遍历数组 60 次
  4. 另一个 for 循环查找数组中的最低元素
  5. 如果找到,交换函数会交换数组中最小值和 p 位置的值
  6. 循环运行 60 次以对数组进行排序
  7. 在主函数中调用打印数组

最佳答案

问题是这样的:

for ( int i=p+1;i<60;i++){
if(a[min]>a[p])min=p;
}

您的循环正在将 a[min]a[p] 进行比较,看看哪个较小。 p 在循环中没有改变,但是 i 却在改变。这是您需要比较的索引,如果发现较小的数字,请将 min 设置为:

  if(a[min]>a[i]) min=i;

关于c - 我写了这段代码用于选择排序,但它什么也没做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486159/

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