星痕࿐ 2024-06-19 10:48 采纳率: 46.2%
浏览 1

问大家一个C语言问题,找出最小的k个数?能不能给一个思路先不要给我代码我想自己写一下。

img


#include<stdio.h>
void sort(int arr[],int n);
int main()
{  
    int n,k;
    int arr[100],i;
    scanf("%d",&n);
    for(i=0;i<n;i++) 
        scanf("%d",&arr[i]);
    scanf("%d",&k);   
    sort(arr,n);
    for (i=0;i<k;i++)   //打印最小的K个数 
        printf("%d ",arr[i]);   
    return 0;  
}

void sort(int arr[],int n)
{
     int t,i,k;
     min=arr[0];
     
     for(i=0;i<n;i++)
     {
         if(min>arr[i])
         {min=arr[i];
          t=i;}

     }

     for(int )
     return k;
}
  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-19 10:48
    关注

    引自免费微信小程序:皆我百晓生

    关于在C语言中找出并打印数组中的最小k个数的问题,可以采用多种策略。这里提供一个基于选择排序的思路,因为题目中似乎提到了sort函数,尽管给出的sort函数实现并不完整且存在错误。

    思路解析

    1. 读取输入:首先读取数组的大小n,然后读取n个整数到数组arr中,接着读取k值。

    2. 排序数组:对数组arr进行排序。可以使用任何排序算法,但考虑到题目中提到的sort函数,这里采用一种简单的排序方法——选择排序。

    3. 打印结果:排序后,数组的前k个元素就是最小的k个数,将它们打印出来。

    完整代码示例

    下面是根据上述思路的C语言代码实现:

    #include<stdio.h>
    
    void sort(int arr[], int n) {
        int i, j, min_idx, temp;
        for (i = 0; i < n-1; i++) {
            min_idx = i;
            for (j = i+1; j < n; j++) {
                if (arr[j] < arr[min_idx]) {
                    min_idx = j;
                }
            }
            temp = arr[min_idx];
            arr[min_idx] = arr[i];
            arr[i] = temp;
        }
    }
    
    int main() {
        int n, k;
        int arr[100], i;
    
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%d", &arr[i]);
        }
        scanf("%d", &k);
    
        sort(arr, n);
    
        for (i = 0; i < k; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
        return 0;
    }
    

    这段代码首先定义了一个sort函数,用于对数组进行选择排序。主函数main中读取了数组和k值,调用sort函数排序数组,然后打印出最小的k个数。注意,这里的打印语句在循环结束后添加了一个换行符\n,以确保输出格式清晰。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月19日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求