数组排序问题

对一个已知数组array('1','3','100','5','99','2'); 数组个数为1000000000;里面值是无序的,进行排序,找出第二大的数。
要求:用时最少的排序算法。

 语言不限。

指导指导。

阅读 3.5k
6 个回答

就用冒泡排序不就ok了。你百度一下js的冒泡排序

如果只是要找出第二大的数,根本不需要排序啊。O(N) 啊~

你要找出第二大的数字,只需要维护最大值和第二大的值即可,对数组进行遍历,遍历一次就可以得到这两个值,这个操作的时间复杂度就是O(N).

如果不用原生排序的话,可以用快排,至于最快也没办法直接肯定,快排还是存在不稳定因素

function qSort(list) {
    if (list.length == 0) {
        return [];
    }
    var lesser = [];
    var greater = [];
    var pivot = list[0];
    for (var i = 1; i < list.length; i++) {
        if (list[i] < pivot) {
            lesser.push(list[i]);
        } else {
            greater.push(list[i]);
        }
    }
    return qSort(lesser).concat(pivot, qSort(greater));
}
arr.sort((a,b) => b-a)[1]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题