算法人生(12):從“優(yōu)先級隊列算法”到“六點優(yōu)先工作法”
在生活中,其實我們可以應(yīng)用到不少算法思想,這篇文章里,作者就介紹了“優(yōu)先級隊列算法”可以如何應(yīng)用于我們的生活,一起來看看吧。
算法思想和生活中很多解決問題的思想有著異曲同工之妙,讓我們來看下今天的“優(yōu)先級隊列算法”可以怎么應(yīng)用到我們的生活中吧!
優(yōu)先級隊列算法(Priority Queue Algorithm)?是一種特殊的數(shù)據(jù)結(jié)構(gòu),它在常規(guī)隊列秉持著“先進(jìn)先出”的原則,并且增加了一個“元素優(yōu)先級”的概念。這意味著隊列中的元素不僅按照進(jìn)入的順序排列,還會根據(jù)它們各自的優(yōu)先級來決定出隊的順序。
隊列中的元素可以是任何類型,只要它們可以比較優(yōu)先級即可。優(yōu)先級隊列中的元素通常帶有與其關(guān)聯(lián)的優(yōu)先級標(biāo)識,優(yōu)先級較高的元素總是位于隊列前面,優(yōu)先被處理。它的工作原理如下:
原理:
優(yōu)先級隊列的核心原理是采用某種數(shù)據(jù)結(jié)構(gòu)(如堆、平衡二叉搜索樹等)來維護(hù)元素的排序。每次插入元素時,都會根據(jù)優(yōu)先級調(diào)整隊列結(jié)構(gòu);每次刪除(或訪問)元素時,返回并移除的是當(dāng)前優(yōu)先級最高的元素。
以二叉堆為基礎(chǔ)的優(yōu)先級隊列為例,其基本操作包括:
- 初始化:創(chuàng)建一個空的優(yōu)先級隊列(通常是空的數(shù)組或列表)。
- 插入:當(dāng)新元素加入時,將其放置在數(shù)組的末尾,然后通過“上濾”過程調(diào)整堆結(jié)構(gòu),以維持最大堆的性質(zhì)(通常使用最大堆)。
- 刪除:移除并返回優(yōu)先級最高的元素(即堆頂元素),然后將數(shù)組的最后一個元素移動到堆頂,并通過“下濾”過程調(diào)整堆結(jié)構(gòu),保持最大堆性質(zhì)。
- 查找最高優(yōu)先級元素:直接訪問堆頂元素即可。
- 判斷隊列是否為空:檢查堆的大小。
二叉堆是一種常見的實現(xiàn)方式,因為堆可以在對數(shù)時間內(nèi)完成插入和刪除最大(或最小)元素的操作,同時它的靈活性也比較高,可以根據(jù)具體的需求定義優(yōu)先級的比較方式,廣泛適用于各種需要考慮優(yōu)先級的場景中。當(dāng)然,相對于基本隊列,優(yōu)先級隊列的實現(xiàn)也更為復(fù)雜一些,尤其是在維護(hù)堆的性質(zhì)時。
從以上可以看出,面對復(fù)雜的問題是,即便“維護(hù)堆”可能會相對復(fù)雜些,需要去設(shè)定規(guī)則處理優(yōu)先級元素的處理順序。但是相對于“沒有重點,眉毛胡子一把抓”的解決方案,“優(yōu)先級隊列算法”更能保證最高優(yōu)先級的問題能夠在最快的時間內(nèi)得到解決,是在“有限時間里盡可能的做到最好的一種思路”。
熟悉MBA考試的同學(xué)會有些取舍的感觸,考MBA的試卷或許沒有特別復(fù)雜,但是考試時長是大家非常頭疼的問題,時間看上去很長,但沒做多久就要交卷了!所以很多考生一出來都說試卷沒有做完。
筆者特地針對這個問題去查了下原因,理由是MBA考的是綜合能力,根據(jù)自己的情況有效地“取舍”,從而完成目標(biāo)也是考試的一項驗證標(biāo)準(zhǔn)。
所以先做哪些題目,后做哪些題目都有著講究,通常情況下要先做寫作題(因為據(jù)說寫作沒有寫完,此項就沒有分),然后做選擇題,碰到題不會的或耗時過長的,要趕緊“過”,不可“戀戰(zhàn)”,先把能快速答出來的問題先做完,如果還有時間再回來看這些需要些“思考時間“的題目。
同時心態(tài)上,不能因為一直碰到無法快速答出的題目就心態(tài)受影響,要先保證所有熟練掌握的題目都有被回答到?!?strong>根據(jù)當(dāng)前的情況,謹(jǐn)記自己的目標(biāo),有效取舍”才可能完成目標(biāo)。
那在生活中,我們很多地方都可以應(yīng)用“優(yōu)先級隊列算法”的思路,比如產(chǎn)品需求很多,一個sprint或許完不成,又或者突發(fā)情況出現(xiàn),必須要先?!耙粋€產(chǎn)出”,定產(chǎn)品的優(yōu)先級順序就非常重要。此外,當(dāng)代IT人一大頭疼的問題“工作生活沒法平衡,加班太多沒有自己個人的時間”,這些問題也需要我們個人學(xué)習(xí)如何應(yīng)用“優(yōu)先級思維”到生活中。
這里介紹一個同樣應(yīng)用“優(yōu)先級”思維的工作方法:“六點優(yōu)先工作制”。
“六點優(yōu)先工作制”是一種由效率專家艾維·李(Avery C. Lee)提出的高效時間管理方法,它強調(diào)每天確定并優(yōu)先處理六項最重要的任務(wù),以提升工作效率和成果產(chǎn)出。它強調(diào)將注意力集中在少數(shù)幾個最關(guān)鍵的任務(wù)上,而不是試圖完成長長的待辦事項清單。這種方法認(rèn)為,每天專注于完成最重要的六項任務(wù),可以有效防止工作日的瑣事分散注意力,提高個人生產(chǎn)力。這種方法對應(yīng)的大概步驟如下:
- 列出任務(wù):在每一天結(jié)束時或新的一天開始時,列出所有需要完成的任務(wù)。
- 評估任務(wù):對每個任務(wù)進(jìn)行評估,考慮其緊急程度、重要性、截止日期等因素。通常情況下,重要度的考量會更高些,根據(jù)具體的事情可調(diào),看個人情況。
- 優(yōu)先級排序:從所有任務(wù)中挑選出六個“當(dāng)前”最重要的任務(wù),按優(yōu)先級從高到低編號為1至6。
- 執(zhí)行任務(wù):按照編號順序逐個完成任務(wù),先完成1號任務(wù),然后是2號任務(wù),依此類推,直至完成六個任務(wù)為止。通常情況下,建議一次只完成一個任務(wù),因為一次只做一件事比較容易進(jìn)入“心流”,進(jìn)入心流的好處不止可以提高做事的效率,也可以讓現(xiàn)代人“散亂”的心漸漸收回來,心靜了,智慧就出來了。如果很想一次做兩件甚至以上的事情,筆者建議這些同步進(jìn)行的事情是對個人來說,用到的是不同的“力”,比如有的事情用的更多的是體力(比如干家務(wù),走路),有的事情用的更多是聽力(干家務(wù)、走路時聽個學(xué)習(xí)的課程)。此處只列大概的思路,大家根據(jù)情況可自行調(diào)整。
- 復(fù)盤與調(diào)整:在每天結(jié)束時或第二天開始時,回顧任務(wù)完成情況,對未完成的任務(wù)進(jìn)行重新評估和優(yōu)先級排序。
其實這個方法,跟產(chǎn)品經(jīng)理評估、優(yōu)化需求時的方法,也是異曲同工的,需求那么多,總要考慮場景,目標(biāo),痛點,方案,成本等來對需求進(jìn)行排序,需求做好了之后,也要根據(jù)實際情況進(jìn)行調(diào)整、優(yōu)化。它的主要思想還是“精力是有限的”,不管是個人還是團(tuán)隊都是有限的(加上市場機會是不等人的),所以把有限的精力放在最重要的事情上,才可能讓個人或團(tuán)隊找到“可以行走江湖的刷子”。
下面以程序員同學(xué)的生活為例來拓展下應(yīng)用思路:
- 任務(wù)清單:程序員可以在項目管理工具或紙質(zhì)筆記本上列出每天需要完成的各項開發(fā)任務(wù)、代碼審核、文檔編寫等。
- 優(yōu)先級分析:考慮任務(wù)對項目的影響程度、截止日期的臨近程度、與其他團(tuán)隊成員的依賴關(guān)系等因素來確定優(yōu)先級。
- 聚焦關(guān)鍵任務(wù):程序員在工作時應(yīng)首先關(guān)注優(yōu)先級最高的任務(wù),如修復(fù)嚴(yán)重影響用戶體驗的Bug、完成關(guān)鍵功能模塊的開發(fā),或者某個別人急等的技術(shù)文檔。
- 時間分割:可以將每天的工作時間劃分為幾個時段,每個時段專注于完成一個優(yōu)先級高的任務(wù)。
- 靈活調(diào)整:程序員在工作中難免會遇到突發(fā)事件(bug)或優(yōu)先級發(fā)生變化(需求變更)的情況,這時應(yīng)及時調(diào)整任務(wù)清單,重新排列優(yōu)先級,確保始終抓住當(dāng)前階段的工作重點。
在應(yīng)用“六點優(yōu)先工作制”,筆者建議也不拘泥于數(shù)字“6”,不一定非要六項優(yōu)先級最高的,可以前面5項,前3項,但最好不要超過6(雜事但必須做的可以歸類到一個時間點,統(tǒng)一處理),免得所有的任務(wù)都變得重要了,這個數(shù)字大家根據(jù)自己的情況自行調(diào)整。
“優(yōu)先級”思維可以讓我們從繁瑣雜亂的思緒中走出來,關(guān)注在最重要的、最具影響的事情上,有點“擒賊先擒王”的意思。希望這可以給大家“走出”工作生活不平衡帶來一定啟發(fā),如果你也有更好的方法,歡迎分享交流!
本文由 @養(yǎng)心進(jìn)行時 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!