摘要:今天去面試,被問到了以下問題從個正整數中找出最大的五個數我的解法思路先生成一個含個數的隨機數組,然后建立一個空數組,及一個變量?,F在采用更穩妥的,可排序的冒泡排序算法,時間復雜度為。
今天去面試,被問到了以下問題:
從1000個正整數中找出最大的五個數我的解法
思路:先生成一個含1000個數的隨機數組Arr1,然后建立一個空數組Arr2,及一個變量max=0。
然后遍歷Arr1,其中大于max的數存入數組2。便利過后,得到遞增數組Arr2。
用slice方法取Arr2后五位即為最大五位。
`
var Arr1 = []; for (var i = 0; i<1000; i++){ Arr1[i] = Math.floor(Math.random()*1000+1); }; //先生成1000個正整數 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);
`
運行結果如下:
這個算法看似能找出最大數,但是存在以下問題:
當Arr1為[100,999,...,1]這樣的遞減數列時,只能找出第一個最大數,無法將Arr2湊滿。而且,面試官還問到了時間復雜度的問題,當時我并沒有概念。
為妥善解決問題,還是將Arr1數組從小到大重新排列,這樣就不會受到原數據中大小次序影響。
因此可以采用算法學中的排序方法,如冒泡排序、選擇排序、插入排序等。
算法復雜度的概念(包括時間復雜度和空間復雜度):
http://blog.csdn.net/booirror...
http://www.jianshu.com/p/99ba...
排序算法的Javascript實現:
https://github.com/damonare/S...解法優化
之前解法的時間復雜度為O(n)。
現在采用更穩妥的,可排序的冒泡排序算法,時間復雜度為O(n*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);
代碼運行截圖:
顯然,實現了目的,但是算法上還可以采用時間復雜度更低的算法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91975.html
摘要:關于我為什么寫這篇文章是因為今天在做訂單模塊的時候看到之前的上描述的年月日用戶位企業位四位自增長數。背景對于其定訂單的生成。個人的看法是主要是唯一,其他關于業務方面的不是太太重要。自增實現了用于將的值遞增,并返回結果。 關于我為什么寫這篇文章是因為今天在做訂單模塊的時候,看到之前的PRD上描述的年月日+用戶id2位+企業id位+四位自增長數。然后竟被我反駁的突然改成了精確時間+4位自增...
摘要:背景當知道要上傳的視頻資料從條變成條時,我就明白,絕對不能再人工處理了。 背景 當知道要上傳的視頻資料從20條變成100條時,我就明白,絕對不能再人工處理了。他們總是想當然的認為,錄入一條數據需要1分鐘,那錄入20條數據就是20分鐘,錄入100條數據,不就是100分鐘嗎?我有時候,真的很想問問他們,沒有考慮過人是會犯錯的嗎?數據越多,出錯的可能就越大;但是數據本身,又是不允許出現紕漏的...
摘要:問題上看到了一個問題數組排序之后更加再對其進行操作時間縮短了對樓主的實例代碼進行了一下重構,代碼如下把最高的回答看了下,也就是在的時候,在判定的時候,沒有排列時候,每次都要重新進行判斷,而排列完之后,當排列完數據大于判斷時候,后面所有的數 問題: stackoverflow上看到了一個問題數組排序之后更加再對其進行操作時間縮短了 對樓主的實例代碼進行了一下重構,代碼如下: publ...
閱讀 1654·2019-08-30 15:55
閱讀 977·2019-08-30 15:44
閱讀 870·2019-08-30 10:48
閱讀 2040·2019-08-29 13:42
閱讀 3188·2019-08-29 11:16
閱讀 1256·2019-08-29 11:09
閱讀 2058·2019-08-26 11:46
閱讀 617·2019-08-26 11:44