如何解决C 中的选择排序算法不打印整个排序数组
#include <stdio.h>
#include <stdlib.h>
int smallest(int [],int);
int select_sort(int[],int);
int smallest(int arr[],int len){
int small_index=0;
int small=arr[0];
for(int i=0;i<len;i++){
if(arr[i]<small){small=arr[i];
small_index=i;
}
}
return small_index;
}
int select_sort(int arra[],int len){
int new_arra[100];
for(int i=0;i<len;i++){
int small=smallest(arra,len);
new_arra[i]=arra[small];
printf("%d",new_arra[i]);
}
return new_arra;
}
int main()
{
int arr[100]={6,1,-2,18};
select_sort(arr,5);
return 0;
}
我为选择排序程序编写了这段代码,我知道理想情况下我应该在 select_sort 函数中使用数组的动态分配,但是我在没有它的情况下尝试了它。它应该按升序打印数组,我想我在某处搞乱了变量赋值,因为当我运行程序时,它只打印输入数组的最小整数 len 次而不是其余的
解决方法
如果你不介意弄乱你的初始数组,你可以这样做:
int select_sort(int arra[],int len)
{
int maxValue = Integer.Max_Value;
int new_arra[100];
for(int i=0;i<len;i++){
int small=smallest(arra,len);
new_arra[i]=arra[small];
arra[small]= maxValue;
printf("%d",new_arra[i]);
}
return new_arra;
请记住,这是非常低效的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。