CYW_N 2017-05-04 11:18 采纳率: 25%
浏览 2086
已采纳

C++ 寻找第K小元素(不排序)

请问这段代码哪里出错了?谢谢~

#include <iostream>
    using namespace std;
int searchk(char a[10], int k)
{
   int num = 0;
    for (int i = 0; i < 10; i++)
    {
        num = a[i];
        int temp = 0;
        for (int j = 0; j < 10; j++)
        {
            if (num > a[j])
                temp++;
        }
        if (temp == k - 1)
            return num;
    }
}
int main()
{
    char a[10];
    int k;
    cout << "please input 10 numbers:";
    for (int i = 0; i < 10; i++)
    {
        cin >> a[i];
    }
    cout << endl << "请输入要插入第几小的元素:";
    cin >> k;
    searchk(a, k);
    system("pause");
}
  • 写回答

2条回答 默认 最新

  • 战在春秋 2017-05-04 13:22
    关注

    修改后的代码如下:

    #include <iostream>
    using namespace std;
    
    
    int searchk(int a[10], int k)
    {
        int result; //返回结果
        int numberOfLess; //假如要找第3小的数,numberOfLess= 2,以此类推
        for (int i = 0; i < 10; i++)
        {
            result = a[i];
    
            numberOfLess = 0;
            for (int j = 0; j < 10; j++)
            {
    
                if (j != i) //无需判断自身
                {
                    if (a[j] < a[i])
                    {
                        numberOfLess++; //记录比a[i]小的数
                    }
                }
    
            }
    
            if (numberOfLess == k-1)//当找到第k个小的数时,跳出整个循环
            {
                break;
            }
    
        }
        return result; //返回找到的数
    }
    int main()
    {
        int a[10];
        int k;
        cout << "please input 10 numbers:";
        for (int i = 0; i < 10; i++)
        {
            cin >> a[i];
        }
        cout << endl << "请输入要插入第几小的元素:\n";
        cin >> k;
        int outPut = searchk(a,k);
        cout << outPut;
        system("pause");
    }
    

    运行结果:

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作