求大神做一个算法分析问题是遍历数组一次,求出数组中的最小元素和次小元素.下面有两个算法,具体程序就不写了,把算法大概的思

1个回答

  • 第1个不可以,第2个是可以的

    2个算法不相同

    可以说2个算法有一个共同点,就是用s来存次小的,用f来存最小的

    第一个算法是错的,它检查a[i]的时候,用 f 来衡量是否要修改 s和f 的值

    例如:f=1,s=3的时候,如果遇到a[i]=2时,因为2>1,所以没拿2来修改 s和f 的值 明显不对

    第二个算法是对的,它检查a[i]的时候,用 S 来衡量是否要修改 S和F 的值

    因为S比F大,所以当a[i]比S小时才需要修改S F的值

    比知道这个执行效率是什么意思,如果建立在正确的前提下的话,是第2个高,因为第1个是错的,

    如果仅仅考虑时间复杂度的话,是第一个效率高,第一个是O(n) 第二个是O(2n) 虽然都可以化成

    O(n) 但是毕竟系数不同