【问题标题】:How can we find out that the number is maximum or minimum entered by user without using sorting? [closed]我们如何在不使用排序的情况下找出用户输入的数字是最大值还是最小值? [关闭]
【发布时间】:2015-10-09 17:25:55
【问题描述】:

{就像用户输入 1,2,32,12,55,5,61,23 一样,我们必须从中找出最大或最小数字,而不使用任何排序技术。 }

【问题讨论】:

  • 你尝试了什么?
  • 我没有使用任何排序技术,答案是61
  • 阿米特你不需要排序来找到数组中的最大值和最小值。您所需要的只是简单的比较。如果您在程序中遇到问题,请尝试创建一个程序,然后发布问题。
  • Java 还是 C,哪个?
  • 我投票结束这个问题作为题外话,因为这是没有任何尝试的家庭作业

标签: algorithm sorting


【解决方案1】:

遍历数字集,跟踪当前最高和当前最低的数字,将集合中的每个数字与这些数字进行比较,并在适当的时候重新分配最高或最低的数字。

【讨论】:

    【解决方案2】:

    您可以读取每个输入并将其与某个变量“最大值”的当前值进行比较。如果输入高于当前值,则使该输入成为新的最大值。您可以为最低限度做同样的事情。

    如果您在一行中获得所有输入,则必须对其进行解析。

    【讨论】:

    • 但我不想写很多代码,这只是一个例子,如果用户输入 10000 个数字可以全部比较
    • @AmitKumar:你别无选择。您必须检查 每个 元素以找到最大值/最小值。没有捷径。
    • #include #include void main(){ int input;整数最大值 = 0; while(input != -999){ printf("输入值:"); scanf("%d",&input);如果(输入 > 最大值){ 最大值 = 输入; printf("输入了新的最大值\n"); } printf("当前最大值:%d\n\n",max); } }
    • @AmitKumar:您是否有理由将该代码复制/粘贴到评论中?顺便说一句,input 第一次在while 循环测试中使用时未初始化,如果所有值均为负数,您的代码将无法工作。来吧,把它作为你的家庭作业。
    【解决方案3】:

    【讨论】:

    • 我知道我可以用 java 做,但我想用 C 语言解决这个问题
    • 一开始你已经标记了 java。祝你好运!
    【解决方案4】:

    您所要求的真正基本示例,这将继续以整数读取,直到用户输入“-999”。每次用户输入新的最大值时,程序都会提示用户。

    READ 如果您想使用它来查找数组中的最大值,只需使用相同的 if 语句遍历数组...下面的示例不存储用户的值.. .

    #include <stdio.h>
    #include <string.h>
    
    void main(){
        int input = 0;
        int max = 0;
        while(input != -999){
        printf("Enter a Value : ");
        scanf(" %d",&input);
        if(input<0)input = 0;
        if(input > max){
            max = input;
            printf("NEW MAX VALUE ENTERED\n");
        }
        printf("Current Max Value: %d\n\n",max);
        }
    
    }
    

    【讨论】:

    • 不是我的反对意见,但是如果用户输入 -1 -2 -3 -999 会发生什么?并且没有最低限度的尝试。
    • 使用未初始化的变量,不关心scanf() 中的换行符/空格,而且这个问题真的不应该有答案
    • 非常感谢正确答案..!!:)
    • @FelixPalmen 这是我对您提出的错误的错误,谢谢。但是,当您说“无论如何这个问题真的不应该有答案”时,我不同意您的看法,这个论坛的全部目的是帮助他人。我们都是从某个地方开始的,并不是每个人第一次看到代码时就理解它,我知道这个问题对你来说是“常识”,但不要把自己放在基座上。
    • @LearningCODE 这个网站是关于编程问题的,而不是“这是我的作业,为我做”。
    【解决方案5】:

    link 显示了一个 SO 答案,其中仅使用 3n/2 比较而不是传统的 2n 比较(n 表示最小值,n 表示最大值)同时找到最大值和最小值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2020-03-02
      • 2013-12-04
      相关资源
      最近更新 更多