java algorithm是什么,讓我們一起了解一下?
algorithm是在數(shù)學(xué)(算學(xué))和計(jì)算機(jī)科學(xué)之中,為任何良定義的具體計(jì)算步驟的一個(gè)序列,常用于計(jì)算、數(shù)據(jù)處理和自動(dòng)推理,算法的核心是創(chuàng)建問(wèn)題抽象的模型和明確求解目標(biāo)。
衡量算法是否高效主要從哪幾個(gè)方面來(lái)分析?
1、簡(jiǎn)單性和清晰度
一般我們都希望算法越簡(jiǎn)單越清晰就越好,但是要保證效率為前提??墒?,往往我們?cè)趶?fù)雜的項(xiàng)目開發(fā)中所遇見的問(wèn)題比較復(fù)雜,對(duì)時(shí)間和空間效率的要求也較高,因此,算法一般都會(huì)比較復(fù)雜。
2、空間效率:這里的空間效率并不是指算法代碼占用的內(nèi)存指令空間,而是指代碼中的數(shù)據(jù)分配(變量與變量所引用值的分配)以及方法調(diào)用所使用的內(nèi)存(調(diào)用棧的空間分配)。
比如,我們常用的遞歸,雖然會(huì)使代碼清晰簡(jiǎn)單,但是內(nèi)存的使用也會(huì)大大提高。理想的程序所使用的內(nèi)存應(yīng)該和數(shù)據(jù)及方法調(diào)用所占用內(nèi)存相等。但事實(shí)總是會(huì)有些額外的開銷,因此,空間效率也是我們衡量算法的方面之一。
3、時(shí)間效率:針對(duì)同一任務(wù)所使用的不同算法所執(zhí)行的時(shí)間都會(huì)不同。
比如:在一個(gè)數(shù)據(jù)集合中查找數(shù)據(jù),我們會(huì)從第一個(gè)數(shù)據(jù)開始查找,一直找到需要的數(shù)據(jù)為止,如果查找數(shù)據(jù)存在,則這種查找方式(稱之為線性查找)一般要查找半個(gè)列表。然而,如果數(shù)據(jù)的排放是有序的,則通過(guò)另一種查找方法會(huì)更有效,即二分查找法,首先從集合的中間開始,如果查找值在中間值的前面,則從集合的前一半重復(fù)查找,否則從后一半查找,每執(zhí)行一次則將查找的集合減少為前一次的一半。
那么我們?nèi)绾问褂胊lgorithm來(lái)進(jìn)行實(shí)戰(zhàn)操作?
案例:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)第二十個(gè)月的兔子對(duì)數(shù)為多少?
?int[]?arr?=?new?int[20]; ????????//?第一個(gè)月和第二個(gè)月兔子的對(duì)數(shù)都是1 ????????arr[0]?=?1; ????????arr[1]?=?1; ????????for?(int?x?=?2;?x?以上就是小編今天的分享了,希望可以幫助到大家。