算法一般可以用哪幾種控制結(jié)構(gòu)組合
算法一般可以用哪幾種控制結(jié)構(gòu)組合
算法一般可以用順序、循環(huán)、選擇控制結(jié)構(gòu)組合。算法的控制結(jié)構(gòu)給出了算法的基本框架,它不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計是否符合結(jié)構(gòu)化原則。
一個算法一般都可以用順序、循環(huán)、選擇三種基本控制結(jié)構(gòu)組合而成。
算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成?
算法一般都可以用順序、循環(huán)、選擇三種基本控制結(jié)構(gòu)組合而成百科。
順序結(jié)構(gòu)表示程序中的各操作是按照它們在源碼中的排列順序依次執(zhí)行的。
選擇結(jié)構(gòu)表示程序的處理需要根據(jù)某個特定的條件選擇其中的一個分支執(zhí)行。
選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。
循環(huán)結(jié)構(gòu)表示程序反復(fù)執(zhí)行某個或某些操作,直到某條件為假(或為真)時才停止循環(huán)。循環(huán)結(jié)構(gòu)的基本形式有兩種:當(dāng)型循環(huán)和直到型循環(huán)。
算法的特征
一個算法應(yīng)該具有以下七個重要的特征:
①有窮性:算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止;
②確切性:算法的每一步驟必須有確切的定義;
③輸入項:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;
④輸出項:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。
沒有輸出的算法是毫無意義的;
⑤可行性:算法中執(zhí)行的任何計算步驟都是可以被分解為基本的可執(zhí)行的操作步,即每個計算步都可以在有限時間內(nèi)完成(也稱之為有效性);
⑥高效性:執(zhí)行速度快,占用資源少;
⑦健壯性:對數(shù)據(jù)響應(yīng)正確。
2018年計算機二級考試公共基礎(chǔ)知識點:算法
2018年計算機二級考試公共基礎(chǔ)知識點:算法 詳細(xì)重點學(xué)習(xí)知識點: 1.算法的概念、算法時間復(fù)雜度及空間復(fù)雜度的概念 2.數(shù)據(jù)結(jié)構(gòu)的定義、數(shù)據(jù)邏輯結(jié)構(gòu)及物理結(jié)構(gòu)的定義 3.棧的定義及其運算、線性鏈表的存儲方式 4.樹與二叉樹的概念、二叉樹的基本性質(zhì)、完全二叉樹的概念、二叉樹的遍歷 5.二分查找法 6.冒泡排序法 1.1 算法 考點1 算法的基本概念 考試鏈接: 考點1在筆試考試中考核的幾率為30%,主要是以填空題的形式出現(xiàn),分值為2分,此考點為識記內(nèi)容,讀者還應(yīng)該了解算法中對數(shù)據(jù)的基本運算。 計算機解題的過程實際上是在實施某種算法,這種算法稱為計算機算法。
1.算法的基本特征:可行性、確定性、有窮性、擁有足夠的情報。
2.算法的基本要素: (1)算法中對數(shù)據(jù)的運算和操作 一個算法由兩種基本要素組成:一是對數(shù)據(jù)對象的運算和操作;二是算法的控制結(jié)構(gòu)。 在一般的計算機系統(tǒng)中,基本的運算和操作有以下4類:算術(shù)運算、邏輯運算、關(guān)系運算和數(shù)據(jù)傳輸。 (2)算法的控制結(jié)構(gòu):算法中各操作之間的執(zhí)行順序稱為算法的控制結(jié)構(gòu)。 描述算法的工具通常有傳統(tǒng)流程圖、N-S結(jié)構(gòu)化流程圖、算法描述語言等。
一個算法一般都可以用順序、選擇、循環(huán)3種基本控制結(jié)構(gòu)組合而成。 考點2 算法復(fù)雜度 考試鏈接: 考點2在筆試考試中,是一個經(jīng)??疾榈膬?nèi)容,在筆試考試中出現(xiàn)的幾率為70%,主要是以選擇的形式出現(xiàn),分值為2分,此考點為重點識記內(nèi)容,讀者還應(yīng)該識記算法時間復(fù)雜度及空間復(fù)雜度的概念。 1.算法的時間復(fù)雜度 算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。
同一個算法用不同的語言實現(xiàn),或者用不同的編譯程序進行編譯,或者在不同的計算機上運行,效率均不同。這表明使用**的時間單位衡量算法的效率是不合適的。撇開這些與計算機硬件、軟件有關(guān)的因素,可以認(rèn)為一個特定算法\”運行工作量\”的大小,只依賴于問題的規(guī)模(通常用整數(shù)n表示),它是問題規(guī)模的函數(shù)。
即 算法的工作量=f(n) 2.算法的空間復(fù)雜度 算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。 一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。
如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。 疑難解答:算法的工作量用什么來計算? 算法的工作量用算法所執(zhí)行的基本運算次數(shù)來計算,而算法所執(zhí)行的基本運算次數(shù)是問題規(guī)模的函數(shù),即算法的工作量=f(n),其中n是問題的規(guī)模。
計算機二級考點
計算機二級考點:
1.算法的概念、算法時間復(fù)雜度及空間復(fù)雜度的概念
算法的基本特征:可行性、確定性、有窮性、擁有足夠的情報。
算法的基本要素:
(1)算法中對數(shù)據(jù)的運算和操作
一個算法由兩種基本要素組成:一是對數(shù)據(jù)對象的運算和操作;二是算法的控制結(jié)構(gòu)。
(2)算法的控制結(jié)構(gòu):算法中各操作之間的執(zhí)行順序稱為算法的控制結(jié)構(gòu)。
程序開發(fā)中的控制結(jié)構(gòu)是什么?
程序控制結(jié)構(gòu)是指在程序控制下進行的數(shù)據(jù)傳遞方式。程序控制結(jié)構(gòu)是指以某種順序執(zhí)行的一系列動作,用于解決某個問題。
理論和實踐證明,無論多復(fù)雜的算法均可通過順序、選擇、循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造出來。
每種結(jié)構(gòu)僅有一個入口和出口。由這3種基本結(jié)構(gòu)組成的多層嵌套程序稱為結(jié)構(gòu)化程序。
程序是一個語句序列,執(zhí)行程序就是按特定的次序執(zhí)行程序中的語句。程序中執(zhí)行點的變遷稱為控制流程,當(dāng)執(zhí)行到程序中的某一條語句時,也說控制轉(zhuǎn)到了該語句。
由于復(fù)雜問題的解法可能涉及復(fù)雜的執(zhí)行次序,因此編程語言必須提供表達復(fù)雜控制流程的手段,稱為編程語言的控制結(jié)構(gòu),或程序控制結(jié)構(gòu)。
所謂順序結(jié)構(gòu)程序就是指按語句出現(xiàn)的先后順序執(zhí)行的程序結(jié)構(gòu),是結(jié)構(gòu)化程序中最簡單的結(jié)構(gòu)。編程語言并不提供專門的控制流語句來表達順序控制結(jié)構(gòu),而是用程序語句的自然排列順序來表達。
計算機按此順序逐條執(zhí)行語句,當(dāng)一條語 句執(zhí)行完畢,控制自動轉(zhuǎn)到下一條語句?,F(xiàn)實世界中這種順序處理的情況是非常普遍的,例如我們接受學(xué)校教育一般都是先上小 學(xué),再上中學(xué),再上大學(xué);又如我們燒菜一般都是先熱油鍋,再將蔬菜入鍋翻炒,再加鹽加 佐料,**裝盤。
選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu)。
當(dāng)程序執(zhí)行到控制分支的語句時,首先判斷條件,根據(jù)條件表達式的值選擇相應(yīng)的語句執(zhí)行(放棄另一部分語句的執(zhí)行)。分支結(jié)構(gòu)包括單分支、雙分支和多分支三種形式。
其中<條件表達式>是布爾表達式,<條件語句體>是由一條或多條語句組成的語句序列。
<條件語句體>的左端與 if 部分相比必須向右縮進,表明它是 if 部分(不妨理解為條件語句的頭 部)的下屬,就像軀體是頭部的下屬一樣。
if 語句的語義很容易理解:首先計算 if 后面的條件表達式,如果結(jié)果為 True,則控制轉(zhuǎn) 到條件語句體的**條語句,一旦條件語句體執(zhí)行完畢,控制即轉(zhuǎn)到 if 語句的下一條語句; 如果結(jié)果為 False,則跳過條件語句體,控制直接轉(zhuǎn)到 if 語句的下一條語句。圖 1中的流程 圖形象地解釋了 if 語句的語義,其中菱形框表示條件測試。雖然 if 語句根據(jù)條件表達式計算 結(jié)果的不同而有兩個分支,但我們習(xí)慣說這種形式的 if 語句實現(xiàn)的是單分支控制結(jié)構(gòu),因為 有一個分支什么也不做。
注意,無論條件是真是假,**控制都轉(zhuǎn)到 if 語句的下一條語句, 也就是說這條 if 語句內(nèi)部雖有兩個分支,但總體只有一個出口。
所謂順序結(jié)構(gòu)程序就是指按語句出現(xiàn)的先后順序執(zhí)行的程序結(jié)構(gòu),是結(jié)構(gòu)化程序中最簡單的結(jié)構(gòu)。編程語言并不提供專門的控制流語句來表達順序控制結(jié)構(gòu),而是用程序語句的自然排列順序來表達。計算機按此順序逐條執(zhí)行語句,當(dāng)一條語 句執(zhí)行完畢,控制自動轉(zhuǎn)到下一條語句。
現(xiàn)實世界中這種順序處理的情況是非常普遍的,例如我們接受學(xué)校教育一般都是先上小 學(xué),再上中學(xué),再上大學(xué);又如我們燒菜一般都是先熱油鍋,再將蔬菜入鍋翻炒,再加鹽加 佐料,**裝盤。
選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu)。當(dāng)程序執(zhí)行到控制分支的語句時,首先判斷條件,根據(jù)條件表達式的值選擇相應(yīng)的語句執(zhí)行(放棄另一部分語句的執(zhí)行)。分支結(jié)構(gòu)包括單分支、雙分支和多分支三種形式。