




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5講數據結構與算法理解數據結構的概念,理解數據結構的邏輯和存儲結構;理解算法的概念和算法的基本特性,了解算法復雜度的度量方法;理解線性數據結構,理解順序存儲和鏈式存儲的存儲方法;描述棧和隊列、串和數組這幾個線性數據結構的概念;了解非線性的數據結構,了解樹、二叉樹以及圖的概念和數據結構;理解排序的概念,描述插入、選擇、氣泡和快速排序的算法;理解查找的概念,描述順序查找和折半查找的算法,并能夠比較它們理解遞歸的概念,能夠在實踐中了解遞歸的應用。
教學目的學習重點數據結構的基本概念算法的描述、流程圖的使用以及算法的復雜度的衡量順序存儲和鏈式存儲的方法棧、隊列、串和數組的概念和用法二叉樹數據結構查詢、排序和遞歸算法第一節數據結構概述1.數據結構概述1.1《數據結構》研究的對象(1)對所加工的對象進行邏輯組織(2)如何把加工對象存儲到計算機中去(3)數據運算數據結構正是討論非數值類問題的對象描述、信息組織方法及其相應的操作
[例5-1]設有一個電話號碼薄,有N個人的姓名和電話號碼。要求設計一個程序,按人名查找號碼,若不存在則給出不存在的信息。1.數據結構概述1.2數據結構相關概念1.基本概念和術語
數據元素、結點、數據項、關鍵字或主關鍵字、次關鍵字、數據對象、數據結構
2.數據結構
特性相同的數據元素構成的集合中,如果在數據元素之間存在一種或多種特定的關系,則稱之為數據結構。
Data-Structure=(D,R)
其中,D是數據元素的有限集,R是D上關系的有限集。1.數據結構概述1.數據結構概述3.四類基本的數據結構集合結構。在集合結構中,數據元素間的關系是“屬于同一個集合”。集合是元素關系極為松散的一種結構,各元素間沒有直接的關聯。線性結構。該結構的數據元素之間存在著一對一的關系。樹型結構。該結構的數據元素之間存在著一對多的關系。圖形結構。該結構的數據元素之間存在著多對多的關系,圖形結構也稱作網狀結構。
123456[例5-2]線性數據結構=(D,S)
D={1,2,3,4,5,6,7,8,9,10}
S={<1,2>,<2,3>,<3,4>,<4,5>,<5,6>,<6,7>,<7,8>,
<8,9>,<9,10>}
1.數據結構概述[例5-3]圖形數據結構=(D,R)D={1,2,3,4,5,6,7,8,9}R={<1,2>,<1,3>,<2,4>,<2,5>,<2,6>,<2,8>,<3,2>,<3,4>,<4,5>,<5,7>,<6,7>,<6,9>,<7,9>,<8,9>}1.數據結構概述
[例5-4]樹形結構=(D,R)D={a,b,c,d,e,f,g,h,i,j,k,l}R={<a,b>,<a,c>,<a,d>,<b,e>,<b,f>,<b,g>,<c,h>,<c,i>,<c,j>,<d,k>,<d,l>}1.數據結構概述1.3數據結構的分類
1、按數據結構的性質劃分
數據的邏輯結構——數據元素之間的邏輯關系(設計算法——
數學模型)數據的物理結構——數據結構在計算機中的映像(存儲結構,算法的實現)
2、按數據結構的操作來劃分
靜態結構——經過操作后,數據的結構特征保持不變(如數組)。
半靜態結構——經過操作后,數據的結構特性只允許很小變遷(如棧、隊列)。
動態結構——經過操作后,數據的結構特性變化比較靈活,可隨機地重新組織結構(如指針)。1.數據結構概述1.3數據結構的分類
3、按數據結構在計算機內的存儲方式來劃分
順序存儲結構——借助元素在存儲器的相對位置來表示數據元素之的邏輯關系。
鏈式存儲結構——借助指示元素存儲地址的指針表示數據元素之間的邏輯關系
索引存儲結構——在存儲結點的同時,建立附加的索引表,索引表中的每一項稱為索引項,形式為:關鍵字,地址。
散列存儲結構——根據結點的關鍵字直接計算出該結點的存儲地址。說明:四種存儲方法可結合起來對數據結構進行存儲映像。1.數據結構概述1.4算法及其描述和算法分析
1、算法的概念及特征
算法:
對問題求解的描述,為解決問題給出的一個確定的、有限長的操作序列。
算法具有以下五個重要的特征:
1)有窮性:一個算法必須保證執行有限步之后結束。
2)確切性:算法的每一步驟必須有確切的定義。
3)輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定除了初始條件。
4)輸出:一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法沒有實際意義。
5)可行性:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。1.數據結構概述1.4算法及其描述和算法分析
2、算法的描述:
1)流程圖
2)偽代碼——類程序設計語言
3、算法的基本結構:
1)順序結構
2)分支結構
3)循環結構1.數據結構概述1.數據結構概述
算法基本結構示意圖1.4算法及其描述和算法分析
4、算法效率衡量方法與準則:
時間復雜度:指算法從開始執行到處理結束所需要的總時間。
T(n)=O(f(n))
空間復雜度:指算法從開始執行到處理結束所需的存儲量空間的總和。
S(n)=O(g(n))1.數據結構概述1.4算法及其描述和算法分析
5、算法與數據結構的關系:計算機科學家沃斯(N.Wirth)提出的:“算法+數據結構=程序”揭示了程序設計的本質:對實際問題選擇一種好的數據結構,加上設計一個好的算法,而好的算法很大程度上取決于描述實際問題的數據結構。算法與數據結構是互相依賴、互相聯系的。一個算法總是建立在一定數據結構上的;反之,算法不確定,就無法決定如何構造數據。1.數據結構概述第二節線性結構2.1線性表
1.線性表的定義
線性表是n(n>=0)個數據元素的有限序列,表中各個元素具有相同的屬性,表中相鄰元素間存在“序偶”關系。 記做:(a1,a2,…….ai-1,ai,ai+1,…,an-1,an)
其中,ai-1稱為ai
的直接前驅元素,ai+1是ai的直接后繼元素
線性表的長度:表中的元素個數n
位序:i稱元素ai在線性表中的位序2.線性結構2.1線性表
2.線性表的順序表示和實現
線性表的順序存儲是指在內存中用地址連續的一塊存儲空間順序存放線性表的各元素,用這種存儲形式存儲的線性表稱其為順序表。
2.線性結構2.1線性表
2.線性表的順序表示和實現
順序表——線性表的順序存儲表示
ConstLIST_INIT_SIZE=100;(C++規范) ConstLISTINCREMENT=10; #defineLIST_INIT_SIZE100(C規范) TypedefStruct{ Elemtype *elem; Int length; Int listsize; Int incrementsize; }SqList;2.線性結構2.線性結構2.1線性表3.線性表的鏈式表示和實現
鏈表是通過一組任意的存儲單元來存儲線性表中的數據元素的,為建立起數據元素之間的關系,對每個數據元素ai,除了存放數據元素的自身的信息ai之外,還需要和ai一起存放其后繼ai+1所在的存貯單元的地址,這兩部分信息組成一個“節點”。2.線性結構2.1線性表
3.線性表的鏈式表示和實現
單鏈表——線性表的鏈式存儲表示
數據域(data)和指針域(next)存儲表示
typedefstructLnode{ ElemType data; StructLnode *next; }Lnode,*LinkList;
2.線性結構2.線性結構2.1線性表
3.線性表的鏈式表示和實現
雙向鏈表(循環鏈表)——線性表的鏈式存儲表示
概念:兩個指針,分別指向前驅元素和后繼元素
typedefstructDuLnode{ ElemType data; StructDuLnode *prior; StructDuLnode *next;}DuLnode,*DuLinkList;2.線性結構2.2棧和隊列1.棧的定義
棧(Stack)是限定只能在表得一端進行插入和刪除操作得線性表,又稱限定性線性表結構。2.棧的結構特點和操作
棧頂(Top)、棧底(Bottom),先入后出(LIFO)棧的基本操作
InitStack(&S)GetTop(S,&e)DestroyStack(&S)Push(&S,e)ClearStack(&S)Pop(&S,&e)StackEmpty(S)StackTraverse(S)StackLength(S)2.線性結構堆棧結構示意圖2.線性結構2.2棧和隊列3.隊列的定義
隊列(Queue)是限定只能在表得一端進行插入在表的另一端進行刪除操作的線性表。4.隊列的結構特點和操作
隊列頭(front)、隊列尾(rear),先入先出(FIFO)隊列的基本操作
InitQueue(&Q)GetHead(Q,&e)DestroyStack(&S)EnQueue(&Q,e)ClearQueue(&Q)Dequeue(&Q,&e)QueueEmpty(Q)QueueTraverse(Q)QueueLength(Q)2.線性結構2.3串和數組1.串的定義和表示方法串定義
串(即字符串)是一種特殊的線性表,它的數據元素僅由一個字符組成字符串,由零個或多個字符組成的有限序列。
S=“a0a1.....an-1”串的長度:n空串:n=0,NullString子串與主串,子串的位置(從0開始)串的比較:最大相等前綴子序列2.線性結構2.3串和數組1.串的定義和表示方法串的表示方法
定長順序存儲表示
兩種表示方法:
1)下標為0的數組存放長度(pascal) typedefunsignedcharSString[MAXSTLEN+1];2)在串值后面加‘\0’結束(C語言)
堆分配存儲表示串變量的存儲空間是在程序執行過程中動態分配的,程序中出現的所有串變量可用的存儲空間是一個共享空間,稱為“堆”。2.線性結構2.3串和數組2.數組的定義和操作數組定義數組是一個具有固定格式和數量的數據有序集,每一個數據元素有唯一的一組下標來標識。數組可以看作線性表的推廣。數組作為一種數據結構其特點是結構中的元素本身可以是具有某種結構的數據,但屬于同一數據類型。二維數組定義其數據元素是一維數組的線形表。N維數組定義其數據元素是N-1維數組的線形表。2.線性結構2.3串和數組2.數組的定義和操作數組的操作initarray(&A,n,bound1,bound2...boundn)——初始化Destroyarray(&A)——刪除數組value(A,&e,index1,index2......indexn)——賦值assign(&A,e,index1,index2......indexn)——分配數組2.線性結構2.3串和數組3.數組的存儲方式和表示數組元素的兩種存儲方式行主序存儲列主序存儲數組中元素在內存映象中的關系:二維數組A[m][n] LOC[i,j]=LOC[0,0]+(i*n+j)*L三維數組B[p][m][n] LOC[i,j,k]=LOC[0,0,0]+(i*m*n+j*n+k)*L2.線性結構第三節非線性結構3.1樹
1.樹的定義與結構特點
樹的定義
n(n>=0)個數據元素(結點)的有限集D,若D為空集,則為空樹。否則:在D中存在唯一的稱為根的數據元素;
當n>1時,其余結點可分為m(m>0)個互不相交的有限子集T1,T2,......,Tm,其中每個子集本身又是一顆樹,并成為根的子樹。
3.非線性結構3.1樹1.樹的定義與結構特點
樹的結構特點
樹具有下面兩個特點:
(1)樹的根節點沒有前驅節點,除根節點之外的所有節點有且只有一個前驅節點。
(2)樹中所有節點可以有零個或多個后繼節點。3.非線性結構3.非線性結構典型的樹結構3.1樹
2.二叉樹
二叉樹的定義二叉樹(BinaryTree)是個有限元素的集合,該集合或者為空、或者由一個稱為根(root)的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成。
3.非線性結構二叉樹的五種基本形態
2.二叉樹
滿二叉樹和完全二叉樹
滿二叉樹(fullbinarytree):所有結點度為2,葉子結點在同一層次。
完全二叉樹(completebinarytree):一棵深度為k的有n個節點的二叉樹,對樹中的節點按從上至下、從左到右的順序進行編號,如果編號為i(1≤i≤n)的節點與滿二叉樹中編號為i的節點在二叉樹中的位置相同,則這棵二叉樹稱為完全二叉樹。3.非線性結構3.1樹
3.樹的運算
樹的運算主要是插入節點、刪除節點和遍歷等幾種。插入節點、刪除節點運算改變樹的結構,但要求在改變結構的同時,保持樹的特性不變,對于二叉樹,插入和刪除操作后的樹仍然是一棵二叉樹。這兩個操作過于復雜,在專業書籍中介紹,在此不做詳細討論。
3.非線性結構3.1樹
3.樹的運算樹的基本運算操作:
InitTree(&T)
DestroyTree(&T)
CreateTree(&T,definition)TreeEmpty(T)TreeDepth(T)Parent(T,e)LeftChild(T,e)
Rightsibling(T,e)InsertChild(&T,&p,i,C)
DeleteChild(&T,&p,i)
Traverse(T)3.非線性結構3.2圖
1.圖的定義與相關概念
圖的定義
圖是由一組節點(vertex)的有窮集V(G)和和一組頂點間的連線(arc)的集合E(G)組成的一種抽象數據結構。記做:G=(V,E)。V是數據結構中的數據元素,E是集合上的關系
3.非線性結構3.2圖
1.圖的定義與相關概念
圖的相關概念弧(arc)、弧頭(終點)、弧尾(起點):<v,w>表示從v到w的弧
有向圖(digraph)、無向圖(undigraph)、邊:(v,w)代表<v,w>和<w,v>
有向網、無向網:帶權的有向圖和無向圖
完全圖(completegraph):邊e為n(n-1)/2有向完全圖:弧e為n(n-1)
3.非線性結構3.非線性結構3.2圖
2.圖的運算
圖的基本運算添加頂點——將一個新頂點插入到圖中添加邊——連接一個頂點和一個目標頂點刪除頂點——從一個圖里移除一個頂點,同時刪除連接頂點的邊。查找頂點——通過遍歷圖來查找特定的頂點。圖的遍歷——指從圖中的任一頂點出發,對圖中的所有頂點訪問一次且只訪問一次說明:圖的遍歷是圖的一種基本操作,圖的許多其他操作都是建立在遍歷操作的基礎之上。3非線性結構第四節算法主要內容一、算法概念二、算法結構三、算法表示(流程圖、偽代碼、N-S圖等)四、基本算法(計數,累加,值交換,求最大(?。┲?,窮舉、迭代、遞推、遞歸)
一、算法的概念1.算法的定義為解決問題而采取的方法和步驟。(非正式)算法是一組明確步驟的有序集合,它產生結果并在有限的時間內終止。(正式)
2.算法的分類計算機算法可分為兩大類:數值運算算法:求解數值非數值運算算法:事務管理例1:
數值計算問題:結構靜力分析計算需要解線性代數方程組。例2:
非數值計算問題:計算機對弈
算法—對弈的規則和策略
模型—棋盤及棋盤的格局3.算法的基本特征有窮性:任何算法都會在有限步后終止;確定性:算法的每一步都有唯一的含義;有效性:算法的每一步都可以被執行;有輸入:可以有多個輸入,也可能沒有輸入;有輸出:算法至少有一個輸出結果。
4.算法設計的原則正確性:對于一切合法的輸入數據都能得出滿足要求的結果。可讀性:算法應該易理解,便于交流。健壯性:當輸入非法數據時,算法應恰當地作出反應或進行相應處理。高效率與低存儲量需求:算法執行時間較少,算法執行所需存儲空間較小。定義動作確定一系列的步驟,每一步都只完成一個動作。精化剔除重復的步驟;不同的步驟完成的動作可能相同,但它們產生的結果不能相同。泛化使算法對盡可能多的具體問題具有適應性。5.如何設計一個算法例1:從一組正整數中找到最大的數。(正整數個數=2,3,…N)例如,
12,8;
12,8,13;
12,8,13,9; 12,8,13,9,11,…..方法1:第一步:
比較第一個數和第二個數;第二步:
比較第一個數和第三個數;第三步:比較第二個數和第三個數;方法2:第一步:將最大值置為第一個數;第二步:將第二個數和最大值進行比較,如果第二個數大于最大值,將最大值置為第二個數,反之保持最大值不變。第三步:將第三個數和最大值進行比較,如果第三個數大于最大值,將最大值置為第三個數,反之保持最大值原值不變。第二、三步程序功能相同,程序描述語言相似和第二、三步不同方法3:第零步:將最大值置為零;第一步:如果當前數大于最大值,那么將最大值置為當前數,否則保留原最大值;第二步:重復第一步直至所有數全比較完。二、算法的三種基本結構任何算法(或程序)都由三種基本結構組成:順序結構判斷(選擇)結構循環結構任何算法都是上述三種結構的組合。1.順序結構S1S22.選擇結構60N條件S1S2Y
雙選擇結構N條件S1Y單選擇結構3.循環結構61
條件A塊NY直到型循環結構條件A塊YN
當型循環結構三種基本結構的特點:一個入口
一個出口不出現死循環和死語句6263T+ITI≤10YN1I,0K,0TK>10YNT+KT64T+ITI≤10YN1I,0K,0TK>10YNT+KT死循環死語句65用順序結構描述將華氏溫度F轉換成攝氏溫度C的流程。算法:C=5/9*(F-32)4.順序結構設計順序結構中,按語句的自然順序依次執行。開始5/9bb*(F-32)C輸出F,C結束輸入F66已知三角形的3條邊邊長,求三角形面積。用順序結構描述求三角形面積的流程。開始(a+b+c)/2ss*(s-a)*(s-b)*(s-c)t輸出area結束輸入a,b,c用順序結構描述兩個值(a=1,b=2)交換的流程
12bca1開始1a,2babba
輸出a,b結束acbacb2112ab21選擇結構(分支結構),根據選擇結構中判斷的結果,選擇執行相應的語句。5.選擇結構及其程序設計開始輸出MAX結束輸入R,HRMAXHMAXR≥HYN例用選擇結構描述求兩個數中的最大值的流程例用選擇結構描述檢查某年是否閏年的流程。X年為閏年滿足下列條件之一:1.N能被400整除2.N能被4整除,但不能被100整除開始輸出XYES結束輸入XX被400整除YNX被4整除YNX被100整除YN輸出XNO用選擇結構描述檢查某成績級別的流程。成績N的級別:A級--X≥90B級—90>X≥80C級—80>X≥60D級—X<60開始輸出X-A結束輸入XX≥90YNX≥80YNYNX≥60輸出X-B輸出X-C輸出X-D循環結構:當循環控制條件為真時反復執行循環體中的語句,直到循環控制條件為假時為止。開始輸出T的值結束輸入KT+KTI+1II≤10YN1I,0T累加器計數器用循環結構描述求10個學生成績之和的流程用T累計10個學生的成績(K),用I記錄累加的次數(I=1,2,…,10)6.循環結構及其程序設計例用循環結構描述求10到100之間所有不能被3整除的整數的流程開始結束I+1II≤100YN10II不能被3整除輸出IYN對10到100之間所有數逐一驗證,凡滿足“不能被3整除”的整數即可輸出。
循環嵌套結構:
一個循環結構的循環體中又出現另一個循環結構。外循環
內循環
J+1JI≤3YN1I輸出IJ≤21J輸出JI+1IYNI=1,輸出1
J=1,輸出1J=2,輸出2I=2,輸出2
J=1,輸出1J=2,輸出2I=3,輸出3
J=1,輸出1J=2,輸出274
例
打印邊長為m的正方型 要求:從鍵盤輸入m值,輸出m行每行m個*號。 例:輸入m=4,輸出的圖形如下:****************算法:
1.輸入m 2.重復打印
m行,每行打印
m個*開始結束輸入MI+1II≤MYN1I
對行循環(I=1,2,…,M)
對I行的各列循環(J=1,2,…,M)輸出*J+1JJ≤MYN1J換行輸出I行的M個*I=1,J=1輸出**
J=2輸出***
J=3輸出****
J=4輸出*****換行I=2J=1,2,3,4********……I=4J=1,2,3,4************
****77例從鍵盤輸入n值,輸出n行用*號組成等腰三角形。例:輸入n=4,輸出的圖形如下:****************
*k=1,n-1=3個空,2*1-1=1個*??***k=2,n-2=2個空,2*2-1=3個*?*****k=3,n-3=1個空,2*3-1=5個********k=4,n-4=0個空,2*4-1=7個*共n行,其中第K行由n-k個空格和2k-1個*組成
分析:
1、輸出n
行。
2、圖形的第k
行(1<=k<=n)由n-k個空格和2k-1個*組成。算法設計:1.輸入n;2.重復輸出n行。對于第
k
行,每行輸出n-k
個空格和2k-1個*
開始結束輸入nk+1kk≤nYN1k
對行循環(k=1,2,…,n)輸出空J+1JJ≤n-kYN1J輸出*J+1JJ≤2k-1YN1J換行
對每個k行各列循環,輸出n-k個空格和2k-1個*三、
算法的表示
自然語言
流程圖偽代碼
結構圖
N-S結構圖
PAD結構圖計算機語言√√√√
用規定的一系列圖形、流程線和文字說明算法中的基本操作和控制流程。流程圖包括:
表示相應操作的框;帶箭頭的流程線;
框內外必要的文字說明。1.流程圖(1)圖形符號起止框判斷框處理框輸入/輸出框注釋框流向線連接點例:求給定半徑R的圓面積和圓周長。算法:圓面積
S=π*R2圓周長
L=2*π*R開始輸出S、L的值結束輸入半徑Rπ*R*RS2*π*R
L順序(2)用流程圖表示算法例:求給定數R的絕對值。算法:|R|=RR≥0
-RR<0開始輸出S的值結束輸入RRS-R
SR≥0YN選擇求S=1+2+3+......+1000s;s+1ss+2s......s+100s0ss+is(循環體)(i=1,2,...,100)例:給定K值,求T=1+2+3+…+K。K=5,T=0I=1:T=0+1=1,I=1+1=2I=2:T=1+2=3,I=2+1=3I=3:T=3+3=6,I=3+1=4I=4:T=6+4=10,I=4+1=5I=5:T=10+5=15,I=5+1=60
TT+I
T(I=1,2,3,…K)開始輸出T的值結束輸入KT+ITI+1II≤KYN1I,0T循環
由于流程線的任意轉向性,傳統流程圖無法保證自頂向下的程序設計,使模塊之間的調用關系難以表達。故兩位美國學者Nassi和Shneiderman于1973年提出了無流程線的N-S流程圖。2.N–S流程圖S1S2流程圖S1S2N-S流程圖(1)圖形符號YNS1S2條件流程圖條件YNS1S2N-S流程圖YN循環體條件流程圖循環體循環條件N-S流程圖流程圖NY循環體條件循環體循環條件N–S流程圖(2)用N-S流程圖表示算法輸入半徑R輸出S、L的值π*R*RS2*π*R
L例:求給定半徑R的圓面積和圓周長開始輸出S、L的值結束輸入半徑Rπ*R*RS2*π*R
L順序開始輸出S的值結束輸入RRS-R
SR≥0YN選擇輸入R輸出S的值RS-RSYR≥0N例:求給定數R的絕對值例:
給定K值,求T=1+2+3+…+K開始輸出T的值結束輸入KT+ITI+1II≤KYN1I,0T循環輸入K輸出T的值I≤K
1I,0TT+ITI+1I偽代碼是算法的一種類似英語的表示法。它是部分英語和部分結構化代碼的組合。英文代碼部分采用不嚴格的語法,很容易看懂;代碼部分包含基本算法結構(順序、選擇和循環)的擴展形式。目前還沒有偽代碼的標準。3.偽代碼偽代碼描述算法的一般組成:算法頭:算法的名字。目的、條件和返回值:
目的:有關算法要做什么的簡短說明
前置條件:列出算法所有前驅條件
后置條件:指出算法產生的影響
返回值:算法返回的結果或無返回值語句序號:表示語句之間的附屬關系。例:用偽代碼描述在一數列中找最小值的算法Algorithm(算法):FindingSmallestPurpose(目的):在一數列中找最小值Pre(前置條件):Listofnumbers(數列)Post(后置條件):NoneReturn(返回值):Thesmallest32416a:S3
21算法:設數列中第一個數為最小值S,然后用后續數依次與S比較,若比S小,則用該數替換原S的值,全部比較完成后S即最小值。1.Setsmallesttothefirstnumber2.Loop(notendoflist)
2.1if(nextnumber<smallest)
2.1.1setsmallesttonextnumber
2.2endif3.endloop4.returnsmallestEndFindingSmallest數列ai(i=1,5)a1S,2ii≤5Yai<SNaiSi+1i返回最小值S1.數列ai(i=1,5)2.
a1S,2i3.while(i≤5)
3.1if(ai<S)thenaiS
endif3.2i+1i
endwhile4.
returnS偽代碼不一定按上述嚴格的格式,且可以使用漢字,只要把算法表達清楚即可。數列ai(i=1,5)a1S,2ii≤5Yai<SNaiSi+1i返回最小值Ss=a[1];i=2;while(i<=5)
{if(a[i]<s)s=a[i];i=i+1;}returns;數列ai(i=1,5)a1S,2ii≤5Yai<SNaiSi+1i返回最小值S4.計算機語言計數累加值交換求最大(?。┲邓?、基本算法窮舉迭代遞推遞歸1.窮舉法基本思想首先根據問題的部分條件預估計出答案的范圍在預估計的答案范圍內,對所有可能的情況逐一驗證。若某個情況使驗證符合題目的全部條件,則該情況是本題目的一個答案。分析:假設a,b分別代表父親和兒子的年齡,x年后a=2b。根據人的壽命,x取值為:1,2,…,150
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空航天復合材料 課件知識點6 高熵合金基復合材料
- 會滾的汽車課件
- 剪輯技巧培訓課件
- 腫瘤科常用藥物臨床應用與管理
- 路基工程這知識培訓
- 2025年 安康市紫陽縣民歌藝術研究中心招聘考試筆試試卷附答案
- 2025年中國噴泉套件行業市場全景分析及前景機遇研判報告
- 小動物搬家課件
- 蛛網膜下腔出血疑難病例討論
- 紅血絲皮膚的成因及護理
- 消化不良的教學設計
- 健康宣教之青光眼掌握預防疾病的技巧
- 2021年10月江蘇省高等教育自學考試企業人力資源管理
- 廣州市荔灣廣雅新初一分班(摸底)語文模擬試題(5套帶答案)
- 法院聘用書記員考試試題及答案
- 學校預防性侵教育活動開展情況總結
- 廣州版四年級英語下冊各單元知識點歸納及同步練習
- 廣東省廉江市實驗學校2022-2023學年數學五年級第二學期期末聯考試題含答案
- 湖南三支一扶考試歷年真題
- 心肺運動試驗-PPT-醫學課件
- 2023年小學數學壓軸幾何圖形經典30題匯編
評論
0/150
提交評論