微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C 中的选择排序算法不打印整个排序数组

如何解决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 举报,一经查实,本站将立刻删除。