成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

關(guān)于排序問題的思考

txgcwm / 2052人閱讀

摘要:今天去面試,被問到了以下問題從個(gè)正整數(shù)中找出最大的五個(gè)數(shù)我的解法思路先生成一個(gè)含個(gè)數(shù)的隨機(jī)數(shù)組,然后建立一個(gè)空數(shù)組,及一個(gè)變量?,F(xiàn)在采用更穩(wěn)妥的,可排序的冒泡排序算法,時(shí)間復(fù)雜度為。

今天去面試,被問到了以下問題:

從1000個(gè)正整數(shù)中找出最大的五個(gè)數(shù)
我的解法

思路:先生成一個(gè)含1000個(gè)數(shù)的隨機(jī)數(shù)組Arr1,然后建立一個(gè)空數(shù)組Arr2,及一個(gè)變量max=0。
然后遍歷Arr1,其中大于max的數(shù)存入數(shù)組2。便利過后,得到遞增數(shù)組Arr2。
用slice方法取Arr2后五位即為最大五位。
`

var Arr1 = [];
for (var i = 0; i<1000; i++){
    Arr1[i] = Math.floor(Math.random()*1000+1);
}; //先生成1000個(gè)正整數(shù)

var Arr2 = new Array();
var max = 0;

for (var i = 0; i<1000; i++){
    if (Arr1[i]>max){
        Arr2.push(Arr1[i]);
        max = Arr1[i];
    } 
};
var result = Arr2.slice[-5];
console.log(result);

`
運(yùn)行結(jié)果如下:

這個(gè)算法看似能找出最大數(shù),但是存在以下問題:
當(dāng)Arr1為[100,999,...,1]這樣的遞減數(shù)列時(shí),只能找出第一個(gè)最大數(shù),無法將Arr2湊滿。而且,面試官還問到了時(shí)間復(fù)雜度的問題,當(dāng)時(shí)我并沒有概念。

問題分析

為妥善解決問題,還是將Arr1數(shù)組從小到大重新排列,這樣就不會受到原數(shù)據(jù)中大小次序影響。
因此可以采用算法學(xué)中的排序方法,如冒泡排序、選擇排序、插入排序等。

概念解釋

算法復(fù)雜度的概念(包括時(shí)間復(fù)雜度和空間復(fù)雜度):

http://blog.csdn.net/booirror...
http://www.jianshu.com/p/99ba...

排序算法的Javascript實(shí)現(xiàn):

https://github.com/damonare/S...
解法優(yōu)化

之前解法的時(shí)間復(fù)雜度為O(n)。
現(xiàn)在采用更穩(wěn)妥的,可排序的冒泡排序算法,時(shí)間復(fù)雜度為O(n*n)。代碼實(shí)現(xiàn)如下:

var Arr1 = [];
for (var i = 0; i<1000; i++){
    Arr1[i] = Math.floor(Math.random()*1000+1);
};

function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        //相鄰元素兩兩對比
                var temp = arr[j+1];        //元素交換
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

var Arr2 = bubbleSort(Arr1);
var result = Arr2.slice(-5);
console.log(result);

代碼運(yùn)行截圖:

最后

顯然,實(shí)現(xiàn)了目的,但是算法上還可以采用時(shí)間復(fù)雜度更低的算法。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/91975.html

相關(guān)文章

  • 關(guān)于生成訂單號規(guī)則一些思考

    摘要:關(guān)于我為什么寫這篇文章是因?yàn)榻裉煸谧鲇唵文K的時(shí)候看到之前的上描述的年月日用戶位企業(yè)位四位自增長數(shù)。背景對于其定訂單的生成。個(gè)人的看法是主要是唯一,其他關(guān)于業(yè)務(wù)方面的不是太太重要。自增實(shí)現(xiàn)了用于將的值遞增,并返回結(jié)果。 關(guān)于我為什么寫這篇文章是因?yàn)榻裉煸谧鲇唵文K的時(shí)候,看到之前的PRD上描述的年月日+用戶id2位+企業(yè)id位+四位自增長數(shù)。然后竟被我反駁的突然改成了精確時(shí)間+4位自增...

    omgdog 評論0 收藏0
  • 【趣味連載】攻城獅上傳視頻與普通人上傳視頻:(一)生成結(jié)構(gòu)化數(shù)據(jù)

    摘要:背景當(dāng)知道要上傳的視頻資料從條變成條時(shí),我就明白,絕對不能再人工處理了。 背景 當(dāng)知道要上傳的視頻資料從20條變成100條時(shí),我就明白,絕對不能再人工處理了。他們總是想當(dāng)然的認(rèn)為,錄入一條數(shù)據(jù)需要1分鐘,那錄入20條數(shù)據(jù)就是20分鐘,錄入100條數(shù)據(jù),不就是100分鐘嗎?我有時(shí)候,真的很想問問他們,沒有考慮過人是會犯錯(cuò)的嗎?數(shù)據(jù)越多,出錯(cuò)的可能就越大;但是數(shù)據(jù)本身,又是不允許出現(xiàn)紕漏的...

    mindwind 評論0 收藏0
  • 關(guān)于排列后數(shù)組一些思考(1)

    摘要:問題上看到了一個(gè)問題數(shù)組排序之后更加再對其進(jìn)行操作時(shí)間縮短了對樓主的實(shí)例代碼進(jìn)行了一下重構(gòu),代碼如下把最高的回答看了下,也就是在的時(shí)候,在判定的時(shí)候,沒有排列時(shí)候,每次都要重新進(jìn)行判斷,而排列完之后,當(dāng)排列完數(shù)據(jù)大于判斷時(shí)候,后面所有的數(shù) 問題: stackoverflow上看到了一個(gè)問題數(shù)組排序之后更加再對其進(jìn)行操作時(shí)間縮短了 對樓主的實(shí)例代碼進(jìn)行了一下重構(gòu),代碼如下: publ...

    DC_er 評論0 收藏0

發(fā)表評論

0條評論

txgcwm

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<