演算法高效
⑴ 數據結構 設計高效演算法問題
// 要求是刪除順序表中在范圍[x, y]內的元素。
// 按常規思路,每刪除一個順序表元素,則要將其後的元素整體前移一個位置。這種演算法用到了雙重for循環,時間復雜度為O(n^2)。
// 以下的演算法只用到了單重for循環,時間復雜度為O(n)。原理是把所有不在范圍[x, y]內的元素依次保存到順序表的前部,而不處理本來要刪除的、在范圍[x, y]內的元素。當把所有不需要刪除的元素都保存到了順序表前部,只需要重新設置一下順序表的長度為「前部」的最大下標+1,就模擬了刪除操作。
void fun(SqList *&L, ElemType x)
{
// i為循環計數器。
// j為不需要刪除的元素個數,初始化為0。
int i, j = 0;
// 依次遍歷順序表的每個元素
for (i = 0; i < L->length; ++i)
{
// 只處理不需要刪除的元素,即不屬於區間[x, y]的元素
if (!(L->data[i] >= x && L->data[i] <= y))
{
// 每找到一個不需要刪除的元素,就把該元素保存到下標j的位置。
L->data[j] = L->data[i];
// 隨後令j自增1。之前j代表的是處理後的順序表的最大下標,現在j代表的是處理後的順序表的長度。由於下標從0開始,所以長度永遠比最大下標大1。
++j;
}
}
// 設置順序表的長度為j,這樣以後遍歷順序表只能訪問前j個元素。即使下標j之後可能還存在屬於[x, y]的元素,但是不會訪問到它們,自然相當於「刪除」了。
L->length = j;
}
⑵ 演算法管理:組織管理轉型、企業高效決策的制勝利器
以下文章來源於蜜蜂學堂
「小李,你本周的表現非常出色。您的銷售額增長了70%,從而幫助你的團隊在排行榜中取得第一的好成績。但是你仍然有很多開放的機會,所以請繼續努力哦!」
接收績效反饋有助於員工成長,它鼓勵學習並獎勵良好的表現。 但是,如果是演算法提供反饋而不是人,該怎麼辦?這就是組織中演算法管理的基礎。
什麼是演算法管理?
演算法管理是通過演算法對員工進行戰略跟蹤、評估和管理。組織通過演算法接管了過去由管理者執行的任務。
這種管理創新在零工經濟中尤為常見。 例如,Uber,Deliveroo和UpWork之類的平台使用演算法來管理和密切監視其全球員工。
演算法給員工分配任務並評估其績效。他們還提供反饋和有關如何提高績效的建議。
但是,使用演算法管理員工慢慢地不再局限於零工經濟。傳統組織越來越發現提高效率和以數據為依據的決策的好處。
大數據和自動化已成為大多數業務部門變革的首要方向,而人力資源部門也將其重點放在了數據驅動的決策上。
人力資源中使用的演算法可以提高效率,甚至勝過人類的決策制定。 實際上,根據普華永道的研究報告,跨國公司中已有40%的人力資源部門使用基於AI的工具 (相關報告可以私聊我獲取)。
例如,演算法的使用在員工選拔中變得非常普遍,該演算法被用於簡歷篩選,使求職者與職位匹配之中。
他們正在通過自然語言處理來分析視頻面試中的面部表情或申請人的書面申請中所體現的動機。此外,演算法還向員工和經理提供關於績效方面的反饋。
隨著演算法在組織決策中的影響力越來越大,這樣就容易導致一個問題:利用演算法的決策是否具備相應的客觀性和准確性?
像其它輔助決策的技術一樣,演算法決策也是一把雙刃劍,它會帶來一系列的挑戰。
• 求職者會如何看待一家通過機器自動完成部分面試和人員選拔過程的公司?
• 員工對自動績效反饋有何反應(反饋不再來源於直接上級)?員工在多大程度上會接受這類反饋?
• 管理者在多大程度上會依賴演算法做出的決策?
事實是:實施演算法會改變組織和人際關系的動態。 因此,必須仔細研究演算法管理的優勢和挑戰,並搞清楚組織實現演算法管理的最佳做法。
我們將在下面詳細討論在您的組織中實施演算法管理的建議。
01
組織實施演算法管理的三大優勢
1.啟動組織績效
提高生產率和工作效率是演算法管理的最重要優勢之一。例如,一個小時內,比較演算法與一個招聘人員可以掃描的簡歷數?
結果是:演算法基本能把人類招聘者按在地上摩擦,兩者之間的差異巨大,這樣可以幫助公司在人才競爭中保持領先地位。
將手動的任務轉變為自動化,將為管理人員騰出更多的時間和資源,以專注於有更高戰略影響力的任務,從而幫助提高組織績效。 未能將分析和人工智慧集成到其戰略事務中的公司將面臨落後他人的風險。
歐萊雅集團,是一間總部位於法國巴黎的皮膚護理、化妝品公司,在全球擁有80000名員工,每個職位空缺平均會收到130份職位申請。
歐萊雅每年開放約15000個職位,需要處理近百萬份申請,因此其開始嘗試利用AI技術幫助招聘人員擺脫令人頭痛的簡歷篩選工作。
Mya是一款聊天機器人,它能夠處理候選人提出的問題,從而在招聘早期幫助歐萊雅節約大量寶貴的時間。 此外,它還能夠檢查各項重要細節,例如求職者是否尚未找到工作,以及簽證的當前狀態等。
接下來,求職者需要面對Seedlink,這款AI軟體負責評估他們在開放式面試問題中給出的答案。 這款工具能夠找到在簡歷評審過程中被忽略的求職者。
該公司招聘人員表示,在一次從12000名候選人中選出80名實習生的過程中,該軟體幫助他們節約了200個小時的工作時間。AI技術幫助歐萊雅能夠更快地招聘10倍的員工,並增加25%的求職者面試機會。
2.改善管理決策和遠程管理
近年來,基於證據和數據驅動的決策已變得越來越普遍。演算法可以幫助處理管理者每天面對的日益復雜的問題。演算法系統的數據處理能力遠遠超出了人類的能力范圍。
他們可以考慮所有相關數據並排除不相關因素。這樣就可以進行客觀、公正、數據驅動的決策。而且,它可以減少決策過程中的偏見。
例如,認知偏見可能會導致零售商相信需要對其員工進行不穩定的安排。零售中不穩定的安排是指零售商通過工作計劃的變化來減少人工成本。
許多零售商認為這種類型的計劃是有效的,因為他們看到了直接的短期收益(例如削減工資),卻忽略了長期的負面影響(例如對客戶服務的影響)。
在這里,可以根據客戶流量和其他數據預測人員需求的演算法開始發揮作用。 研究表明,「將演算法與管理者的直覺相結合可以導致更好的人員配置決策」。
演算法對於遠程辦公也可能是有益的。勞動力將變得越來越分散,在某種程度上,遠程和混合辦公將成為常態。
這可能給員工帶來巨大的好處。但是,管理人員可能很難跟上員工的進度和績效。 績效監控演算法可能是成功進行遠程管理的重要工具。
3.接收個性化的見解和反饋
演算法管理不僅為管理人員帶來好處,而且為員工帶來好處。演算法可以提供個性化的績效反饋。
Deliveroo向其快遞員發送個性化的月度績效報告。 他們獲得有關其平均「接受訂單時間」,「到餐廳的路程時長」,「到客戶處的路程時間」以及演算法跟蹤的其他指標的信息。
演算法可以洞察員工的工作進度、待辦事項和開展的項目。它們還用於改善員工的福祉。 這種演算法分析員工的需求和目標,並推薦培訓和發展計劃。
演算法還可以跟蹤和評估對員工的福祉和動力最重要的因素,在此基礎上,他們可以就如何提高員工福利向管理人員提供建議。
02
組織運用演算法管理的三個最重要的挑戰
1. 關於演算法管理的倫理問題
除了演算法管理的好處之外,還有幾個重要的倫理問題。
演算法的主要目標是改進決策,使決策更加客觀公正。然而,情況可能恰恰相反,由於演算法可以消除或減少決策過程中的人工干預,因此,人們可能認為演算法是不公平的。
主要的關注點是演算法所依據的數據。在樣本數據上訓練演算法來預測事件並做出決策,因此,數據的質量是一個重要的因素。
例如,一個組織可以訓練一種關於歷史人才數據的演算法,在這些數據中,很少有女性擔任管理職位,然後,該演算法可能會做出預測:女性在公司管理崗位上取得成功的可能性較低。因此,女性可能被排除在組織的人才管理計劃之外。
演算法通常是在「黑箱」中操作,它們並不透明,而且演算法的工作精度通常也不清楚。這可能會對演算法的信任度提出挑戰,並為演算法的決策提出問責性問題。
美國一些州已經在研究演算法和人工智慧在招聘中的使用,以及如何確保它們的公平性和透明度。
紐約州正在立法,要求招聘技術供應商進行反偏見審計,並確保遵守就業歧視法。
伊利諾伊州頒布了 《人工智慧視頻面試法》 (AI Video Interview Act),對使用人工智慧分析應聘者視頻面試的公司施加了限制。
利用演算法管理不是一個是或否的問題。通常,只有部分決策是自動化的。 因此,公平和責任問題取決於公司在多大程度上依賴演算法決策。
真正的問題是:演算法的作用是增強還是完全自動化?你是用演算法來給你提供建議,還是用它來代替人類決策,這都是有區別的。
2. 演算法管理挑戰管理者和人力資源的角色
演算法管理減少或取代了不同流程中的人工參與和交互。這對管理者和人力資源構成了挑戰。當個人和同理心的一面消失後,員工管理會發生怎樣的變化?
管理者和人力資源從業者都需要適應演算法管理帶來的新動態,他們需要新的技能和能力,為負責任地使用演算法做准備。
管理者和人力資源管理者也需要採用(潛在的)員工的觀點。例如,當候選人不相信演算法能看出自己有多獨特時,招聘中使用的演算法可能會出現問題。
那麼,管理者和人力資源部門如何面對演算法管理運用後,帶來的自動化程度的提高和人際交往的減少呢?
他們如何成功地創造數據驅動文化的變革呢?所有這些都是人力資源和管理人員必須找到答案的問題。
3.演算法管理對員工福利的風險
演算法管理也可能對員工的福祉構成風險。一些人將實時行為跟蹤、反饋和評估與泰勒主義的監視進行了比較,演算法管理可以被視為對員工的一種侵入式控制形式。
這似乎也與賦予員工更多自主權、靈活工作和時間表的趨勢相沖突。公司必須密切關注員工對引入演算法管理的反應。
一些員工可能認為這是對他們心理安全和自主的威脅,這樣導致的結果是,由於引入演算法管理,員工的幸福感可能會下降。
例如,一家國際連鎖酒店使用軟體工具來管理客房服務員。他們需要不斷更新下一個要打掃的房間,該公司還能跟蹤他們打掃一個房間需要多長時間。
然而,工作人員指出,該演算法沒有考慮到他們工作的細微差別,使工作變得更加困難。 他們變得無法安排自己的一天,工作也變得更吃力,因為演算法「指揮著」他們「在酒店各個樓層里拚命的跑來跑去」。
03
實施演算法管理的建議
好消息是:在減少演算法管理挑戰的同時,也有可能獲得演算法管理的好處。 以下策略可以幫助管理者負責任地在組織中實施演算法管理。
1. 戰略
首先,確定演算法管理的使用程度是至關重要的。Gig平台完全依賴演算法管理,但對於更傳統的公司來說,這可能不是正確的解決方案。
因此,這不是非此即彼的問題,而是在哪裡、在什麼程度上的問題。
公司可以找出成本高且相對標准化的流程,並從那裡開始。在那裡,你可以期待演算法管理能獲得最大的收益。
在任何情況下,將演算法集成到業務和決策過程中都需要一個明確的戰略:確定它們是增強還是自動化人類決策。
2. 變革管理
在實施演算法管理時,考慮員工的福祉也很重要。在組織中引入演算法是一個實質性的轉變,變革管理的視角可能會很有幫助,主動的變革管理是引入演算法的決定性因素。
你需要確保已經做好變革的准備。通過幫助你的員工和經理理解演算法所增加的價值,可以讓他們准備好迎接變革。
人們也可能對演算法管理的引入感到威脅。這可能是由於缺少關於演算法管理的廣泛且深入的交流。
同樣,員工可能會擔心機器正在取代他們,為了克服這一點,在變革過程的早期就把員工和管理者納入進來是很重要的。建立開放的溝通渠道有助於解決人們所關心的問題。
這包括主動溝通數據的用途以及誰對演算法決策負責。它可以防止員工或管理者感到自己被蒙在鼓裡。
溝通和變革管理應該與培訓齊頭並進。培訓可以讓人們輕松地處理與演算法的關系,並移交決策。
如果人們不了解演算法是如何工作的,他們可能不想使用它。培訓員工和管理人員使用演算法所需的技能和能力是至關重要的。
3.不斷評估
最後,公司需要採用一種持續評估的文化。跟蹤演算法的執行情況的必要性。只有當決策是准確的、高質量的,人們才會接受演算法帶來的附加值。
並不是每一種演算法都能提高效率,所以監控其質量是很重要的。 這一變化對員工的影響也需要跟蹤,組織可以為員工提供表達關切和提供反饋的機會,特別是那些由演算法管理的員工。這為組織調整和改進演算法管理提供了有價值的信息。
演算法管理的好處以及它如何幫助企業在競爭中保持領先地位是顯而易見的。
演算法不僅能提高效率,還能增強決策能力。不過,這不應該以犧牲員工福祉為代價。
自動化執行的任務(比如提供反饋)代表了一個巨大的變化,但我們對把這種變化轉變成積極和可持續的事情具有主動權,管理者和人力資源需要在創造變革准備方面發揮重要作用。
沒有一刀切的方法,每個組織都需要仔細評估演算法的引入給他們帶來的好處和挑戰。
本文提出的策略可以幫助指導組織完成這一轉變。演算法管理的前景是巨大的。然而,有必要始終關注組織所擁有的最有價值的資產: 我們的員工。
了解更多: 方雲數字化創新績效,數據智能驅動創新型增長
⑶ 數據結構:設計一個高效演算法,將順序表中的所有元素逆置,要求演算法空間復雜度為O(1)。
設計一個高效演算法,將順序表中的所有元素逆置,要求演算法空間復雜度為O(1)掃描順序表L的前半部分元素L.data[i] (0<=i<L.length/2),將其與後半部分的對應元素L.data[L.length-1-i]進行交換即可。
順序表的存儲只要確定了起始位置,表中任一元素的地址都通過下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n 其中,L是元素佔用存儲單元的長度。
(3)演算法高效擴展閱讀:
數據的物理結構是數據結構在計算機中的表示,它包括數據元素的機內表示和關系的機內表示。由於具體實現的方法有順序、鏈接、索引、散列等多種。
數據元素的機內用二進制位(bit)的位串表示數據元素。當數據元素有若干個數據項組成時,位串中與各個數據項對應的子位串稱為數據域(data field)。