日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

同為程序員為何你工資這么低?為何BAT面試要面算法?

中國有80%以上的程序員覺得算法在日常開發中并沒有實際用處,殊不知算法只是一種解決問題的思想。

雞兔同籠子問題看算法在編程中的重要性,終于明白為何工資低了

 

而我國大部分程序員都是沉浸在會多少個框架、會多少門編程語言、實現過多少個接口中。在大部分程序員日常開發中很大一部分工作的目的都只是尋求業務功能實現。但是在BAT,他們面對的是每日龐大的請求量,除業務功能外他們還需要考慮性能、體驗、穩定性,此時代碼的效率和嚴謹性就比功能的實現更加的來的重要。

 

下面就以最經典的雞兔同籠子問題看算法在編程中的重要性,讓大家明白同為程序員為何你工資這么低?看完這下服氣了嗎?

 

雞兔同籠問題

問題(業務需求):已知籠子里共有20個頭56只腳,請問雞和兔子分別有多少只?

普通程序員(實現業務型):

這類程序員只注重業務的實現,不會去深究需求的底層邏輯。在他們眼里循環是萬能的,沒有循環解決不了的問題,一層不行那就兩層,兩層就行就三層。。。

	for (int i = 0; i <= 20; i++)
	{
		for (int j = 0; j <= 20; j++)
		{
			if( i + j == 20 && 2*i+4*j == 56)
			cout<<"雞:"<<i<<"兔:"<<j<<endl;
		}
	}

稍微會動一點腦思考的,可能會發現只需要一層就能實現:

這類程序員在開發中會注重到自己代碼的質量,盡量減少無謂的代碼和循環,但是仍然沒有涉及到本質的算法。

for (int i = 0; i <= 20; i++)
	{
		if(i*2+(20-i)*4 == 56)
		cout<<"雞:"<<i<<"兔:"<<20-i<<endl;	
	}

用一點算法思維來實現業務:

問題的本質是兔子比雞多2只腳,通過這個差異來構建思路,可以不用任何循環就實現業務需求

double allRabitFootCount = 20*4  ;
double chickCount = (20*4 - 56)/(4-2) ;
cout<<"雞:"<<chickCount<<"兔:"<<20-chickCount<<endl;	

上述例子中雞兔總數量比較少,三種實現運行效率都差不多,但是如果雞兔的總數達到萬億級別呢?那么這三種方案的效率差距就是顯而易見的。

結語

很多程序員到現在還粗暴的將算法與數據結構畫等號。

對,目前力扣上的算法題基本全是跟數據結構掛鉤的,但是在大家應該明白各類數據結構當初被創造出來也是為了應對越來越豐富的業務需求,本質也是解決業務需求的一種思想。比如鏈表的出現是為了應對更加高效便捷的動態線性數據存儲。

算法是一種思想,也是一種讓業務更高效、更穩定的編程習慣。

如果大家對應編程更底層、更深入的一些思考感興趣歡迎大家關注大叔,訂閱下方專欄獲得更多編程知識

分享到:
標簽:算法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定