中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

5.3 運用典型算法 課件(共27張PPT)

資源下載
  1. 二一教育資源

5.3 運用典型算法 課件(共27張PPT)

資源簡介

5.3 運用典型算法
第5單元 程序設計入門
任務 1
運用排序算法
列表
1
數據處理通常會涉及很多數據,這些數據需要一個容器進行管理,這個容器就是數據結構,Python中的數據結構主要有序列(列表、元組等)集合和字典。列表(list)是 Python最常用的序列,具有可變性,可以追加、插、刪除和替換元素。
創(chuàng)建列表
創(chuàng)建列表可以使用方括號“[]”將元素括起來,元素之間用逗號分隔。
a=[12,35,56,23]
b=['張三','李四','王五']
列表
1
追加元素
a=[12,35,56,23]
a.append(30) #在列表后面追加一個元素
a+=[30,40] #利用“+=”運算符在列表后面追加多個元素
a.extend([30,40]) #利用“extend()”方法在列表后面追加多個元素
要在列表中追加單個元素,可使用 append()方法;要在列表中追加多個元素或另一個列表,可使用“+=”運算符或 extend()方法。
列表
1
插入元素
a=[12,35,56,23]
a.insert(2,30) #在列表索引2(第3個元素)位置上插入一個元素
使用insert()方法可以在列表中指定索引位置插入一個元素。
替換元素
使用“=”運算符可以替換列表的元素。
a=[12,35,56,23]
a[1]=10 #在列表索引1位置上將35替換為10
列表
1
刪除元素
a=[12,35,56,23]
a.remove(35) #在列表中查找第一個值為35的元素并刪除
a.pop(1) #刪除列表索引1位置上的元素
使用 remove()方法或pop()方法可以刪除列表中的元素。remove()方法從左至右查找列表中的元素,如果找到匹配的元素則刪除;如果找到多個匹配元素,只刪除第一個;如果沒有找到則提示錯誤。pop()方法刪除指定索引位置上的元素,如果不指定索引位置,則刪除最后一個元素。
選擇排序算法
2
選擇排序基本思路:每次從待排序的數據中選出最小元素,順序放在之前已經排好序的數據最后,直到全部數據排序完畢。實現(xiàn)方法:取第一個數和后面的數逐一比較,然后一輪之后得到最小的數放在第一個,然后開始取第二個,重復之前的比較。
選擇排序算法
2
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}7
4
5
9
8
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
4
5
9
8
2
7
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
5
9
8
4
7
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
4
9
8
5
7
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
4
5
8
9
7
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
4
5
7
9
8
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
4
5
7
8
9
初始狀態(tài):
第1輪:
第2輪:
第3輪:
第4輪:
第5輪:
第6輪:
選擇排序算法
2
假設排序列表為a,數據個數為n。
a=[7,4,5,9,8,2,1]
for i in range(len(a)-1):
minIndex=i #記錄最小數索引
for j in range(i+1,len(a)):
if a[minIndex]>a[j]: #若找到更小的數
minIndex=j #將找到的最小數和未排序的第一個數交換
a[i],a[minIndex]=a[minIndex],a[i]
print(a)
插入排序算法
3
插入排序基本思路:每次取出一個待排序的數據元素,按其大小插入到之前已經排好序的數據集中,直到全部待排序元素插入完畢。具體實現(xiàn)方法為:從左邊開始取值,然后和它左邊的所有元素值進行比較,如果取的值比它左邊的值小就與其交換,重復以上操作。
插入排序算法
3
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}7
4
5
9
8
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}4
7
5
9
8
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}4
5
7
9
8
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}4
5
7
9
8
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}4
5
7
8
9
2
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}2
4
5
7
8
9
1
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}1
2
4
5
7
8
9
初始狀態(tài):
第1輪:
第2輪:
第3輪:
第4輪:
第5輪:
第6輪:
插入排序算法
3
假設排序列表為a,數據個數為n。
a=[7,4,5,9,8,2,1]
for i in range(1,len(a)): #從第二個數開始
for j in range(i-1,-1,-1): #從外層循環(huán)的下標值比較到第一個數
if a[j+1] a[j+1],a[j]=a[j],a[j+1] #較小的值左移
print(a)
Python功能庫
4
Python既有內置函數和標準庫,又有第三方庫和工具,可用于文件讀寫、網絡抓取和解析、數據庫連接、音視頻處理、數據挖掘、機器學習等,靈活運用 Python功能庫,能夠擴展程序功能,提高編程效率。
通常用 import命令就可以引Python功能庫,例如,要與 MySQL數據庫建立連接,就要使用第三方庫 pymysql,引入這個庫的語句為:
import pymysql
實踐體驗
5
編寫籃球比賽積分排名程序。
課后拓展
6
采用插入排序算法,對某一字符列表進行降序排序。
操作提示:字符排序是按照字符的ASCII碼順序,且相同字母的大小寫其ASCII碼不相同。
02
鞏固提高
01
討論與交流
通過網絡查閱并討論其他排序算法。
任務 2
運用查找算法
順序查找算法
1
順序查找也稱線性查找,即從數據結構線性表的一端開始,順序掃描,依次將掃描到的關鍵字與給定值相比較,若相等則表示查找成功;若掃描結束仍沒有找到關鍵字等于給定值的數據,表示查找失敗。順序查找多用于查找對象的排列無規(guī)律時。假設查找列表為a,對象個數為n,算法流程圖如圖所示。
流程圖
順序查找算法
1
a=['B','A','E','F','D','C']
target='E' #查找目標
i=0 #初始查找位置
found=False #查找是否成功標志
while i if a[i]==target: #查找匹配對象
found=True
else:
i+=1 #未找到繼續(xù)掃描下一個對象
print(found)
示例代碼
二分查找算法
2
二分查找也稱折半查找,比順序查找的效率高,但它要求待查數據結構是有序排列的,適用于不經常變動且查找頻率較高的有序數據。二分查找從數據結構的中間位置開始,如果中間元素正好與查找關鍵字相等,則查找成功;否則利用中間位置將數據分成前、后兩個部分,如果中間元素大于查找關鍵字,則繼續(xù)在前一半數據中查找,否則繼續(xù)在后一半數據中查找,重復這樣的操作,每一次比較都使搜索范圍縮小一半。
二分查找算法
2
如要在序列“10,20,40,60,70,80,90”中查找70,查找過程示意圖如圖所示。
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}10
20
40
60
70
80
90
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}70
80
90
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}70
第1輪:
第2輪:
第3輪:
偏小
偏大
正確
二分查找算法
2
假設查找列表a,對象個數為n。
a=[10,20,40,60,70,80,90] #有序列表
target=70 #查找目標
i=0 #初始查找位置
j=len(a)-1
while i<=j:
m=(i+j)//2 #取中間值
if a[m]==target:
print("所查對象位置下標:",m)
break
elif a[m]>target:
j=m-1
else:
i=m+1
流程圖
示例代碼
實踐體驗
3
編寫英語單詞默寫程序。
課后拓展
4
02
鞏固提高
01
討論與交流
通過網絡查閱并討論其他查找算法,討論5.2任務2中猜數字游戲,用哪種查找方式速度最快。
某公司舉行新產品發(fā)布會,參會客戶都進行了登記,采用二分查找算法,在登記表中查找是否有某一客戶參會。操作提示:需要先按照客戶名稱排序。
課后拓展
5
03
探究與合作
1.玩轉“漢諾塔”游戲——遞歸算法
“漢諾塔”是一個古老的益智游戲,如圖所示,木板上有3根柱子,分別是原始柱、借力柱和目標柱,原始柱上有若干個圓盤,規(guī)定每次只能移動一個圓盤,且小的圓盤只能疊在大的圓盤上面。請設計算法,用盡可能少的次數把所有圓盤從原始柱全部移動到目標柱上。
操作提示:遞歸算法是一種直接或者間接調用自身的算法(如函數的自調用),它體現(xiàn)了“以此類推” “用同樣的步驟重復”的思想,可以使算法的描述簡潔,易于理解,其實質是把問題轉換為規(guī)模縮小了的同類問題。
課后拓展
5
03
探究與合作
2.繪制遞歸圖形
Python程序中內置了大量的函數,turtle模塊是其中一個繪制圖形的函數庫,就像一只小烏龜,在一個橫軸為x、縱軸為y的坐標系原點(0,0)位置開始,根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形。嘗試繪制一個自己喜歡的遞歸圖形。
單元小結
6
本單元主要學習了算法的基本概念,計算機程序、程序設計語言、程序基本結構、Python基本語法及排序算法、查找算法等典型算法的基礎知識,初步掌握了程序設計的方法,能使用程序設計工具編輯、運行和調試簡單的程序,具備了運用程序設計解決簡單問題的初步能力。
謝謝觀看!

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 潍坊市| 乡城县| 房产| 扬州市| 湖南省| 安福县| 富平县| 清原| 肇州县| 宜丰县| 辉县市| 修水县| 常熟市| 嫩江县| 邵阳市| 京山县| 昭苏县| 临泽县| 平和县| 子长县| 扎鲁特旗| 特克斯县| 临沂市| 景泰县| 霍林郭勒市| 洛扎县| 呼伦贝尔市| 洛扎县| 竹北市| 耿马| 辽源市| 新郑市| 铜鼓县| 高淳县| 肇源县| 翼城县| 当雄县| 苏尼特右旗| 盐池县| 鄂伦春自治旗| 洛南县|