版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
3.2數(shù)據(jù)的排序高中信息技術(shù)/教科版/選擇性必修1目錄1.情境導(dǎo)入3.討論探究2.體驗探究4.課堂小結(jié)1.情境導(dǎo)入網(wǎng)上商城平臺是如何實現(xiàn)按價格、銷量等進(jìn)行升序或降序排序,并顯示商品信息的呢?本節(jié)圍繞“按序查看商品”項目展開學(xué)習(xí),通過項目活動學(xué)習(xí)常見的排序算法,體會迭代方法的具體應(yīng)用,理解數(shù)據(jù)結(jié)構(gòu)與算法的關(guān)系。本節(jié)主要包含“按價格升序顯示商品”和“按銷量降序顯示商兩個任務(wù)。2.體驗探究
任務(wù)一
按價格升序顯示商品
活動1初步嘗試排序下面是某網(wǎng)上商城的簽字筆銷售數(shù)據(jù),請將表中數(shù)據(jù)按價格從低到高進(jìn)行排序,將排序后的結(jié)果填入對應(yīng)的表格中。品牌銷量/盒價格/元評論數(shù)/條博士8066108英雄1887886永輝23658186晨輝20046190得利566850梅花1852692簽字筆銷售數(shù)據(jù)
任務(wù)一
按價格升序顯示商品
活動1初步嘗試排序品牌銷量/盒價格/元評論數(shù)/條填一填按價格從低到高排序后的簽字筆銷售數(shù)據(jù)梅花1852692晨輝20046190永輝23658186博士8066108得利566850英雄1887886你是如何排序的呢?對簽字筆銷售數(shù)據(jù)按照價格從低到高進(jìn)行排序的過程就是整理數(shù)據(jù)順序的過程。通過比較價格的大小,調(diào)整數(shù)據(jù)的順序。在整理的過程中,只調(diào)整數(shù)據(jù)的排列順序,不改變數(shù)據(jù)內(nèi)容。排序(sorting)就是整理數(shù)據(jù)的順序,使其從無序變?yōu)橛行?。排序的概?.討論探究
任務(wù)一
按價格升序顯示商品
活動2體驗冒泡排序過程博士66英雄78永輝58晨輝46得利68梅花26不交換博士66英雄78永輝58晨輝46得利68梅花26交換博士66永輝58晨輝46英雄78得利68梅花26交換博士66永輝58晨輝46得利68英雄78梅花26博士66永輝58晨輝46得利68梅花26英雄78交換交換在未排序的簽字筆銷售數(shù)據(jù)中找到價格最高者放在序列的末尾,這樣未排序的簽字筆銷售數(shù)據(jù)就會減少1個。若干次迭代后,當(dāng)未排序的簽字筆銷售數(shù)據(jù)只剩下一個時,排序就完成了。第1次迭代過程
任務(wù)一
按價格升序顯示商品
活動2體驗冒泡排序過程經(jīng)過5次“比較一交換”,第1次迭代后價格的序列是:66,58,46,68,26,78。根據(jù)這個思路,補(bǔ)全圖3.2.3,完成第2次迭代過程。博士66永輝58晨輝46得利68梅花26英雄78英雄78英雄78英雄78交換永輝58晨輝46博士66得利68梅花26永輝58晨輝46博士66得利68梅花26永輝58晨輝46博士66梅花26得利68交換不交換交換第2次迭代過程
任務(wù)一
按價格升序顯示商品
活動2體驗冒泡排序過程填一填第2次迭代后價格的序列是:
,未排序的數(shù)據(jù)剩下
個。第3次選代后價格的序列是:
,未排序的數(shù)據(jù)剩下
個。第4次迭代后價格的序列是:
,未排序的數(shù)據(jù)剩下
個。第5次選代后價格的序列是:
,未排序的數(shù)據(jù)剩下
個。經(jīng)過5次迭代,最后完成了6個簽字筆銷售數(shù)據(jù)按照價格升序排列。58,46,66,26,68,78446,58,26,66,68,78346,26,58,66,68,78226,46,58,66,68,781
任務(wù)一
按價格升序顯示商品
活動3建立數(shù)據(jù)結(jié)構(gòu)冒泡排序(bubblesort)是一種通過“比較一交換”進(jìn)行排序的方法,首先將第1個數(shù)據(jù)和第2個數(shù)據(jù)進(jìn)行比較,若為逆序,則將兩個數(shù)據(jù)交換位置;然后比較第2個數(shù)據(jù)和第3個數(shù)據(jù),以此類推,直至最后兩個數(shù)據(jù)進(jìn)行過“比較一交換”為止。上述過程稱作第一趟“冒泡”,其結(jié)果使得最大的數(shù)據(jù)被放到最后的位置上。之后對除了最大數(shù)據(jù)之外的剩余部分進(jìn)行下一趟“冒泡”,經(jīng)過若干趟“冒泡”后,如果剩余部分只包含一個數(shù)據(jù),則冒泡排序完成。冒泡排序
任務(wù)一
按價格升序顯示商品
活動3建立數(shù)據(jù)結(jié)構(gòu)為了便于對簽字筆銷售數(shù)據(jù)進(jìn)行處理,定義簽字筆商品類,其Python代碼如下。01.#定義簽字筆商品類02.classpen:03.def__init__(self,brand,sales,price,comments)04.self.brand=brand
#品牌05.self.sales=sales
#銷量06.self.price=price
#價格07.ments=comments
#評論數(shù)
任務(wù)一
按價格升序顯示商品
活動3建立數(shù)據(jù)結(jié)構(gòu)創(chuàng)建一個線性表對象alist,存放表3.2.1所示的簽字筆銷售數(shù)據(jù)對象。請補(bǔ)全下面的代碼。08.fromlinearListimportLinearList
#導(dǎo)入線性表09.alist=LinearList()
#創(chuàng)建線性表對象"10.alist.appendItem(pen("博士",8,66,108))
#添加簽字筆數(shù)據(jù)元素11.alist.appendItem(pen("英雄",188,78,86))
#添加簽字筆數(shù)據(jù)元素12.alist.appendItem(pen("永輝",236,58,186))
#添加簽字筆數(shù)據(jù)元素13alist.appendItem(pen())#添加簽字筆數(shù)據(jù)元素14.alist.appendItem(pen())#添加簽字筆數(shù)據(jù)元素15.alist.appendItem(pen())#添加簽字筆數(shù)據(jù)元素‘晨輝’,200,46,190‘得利’,56,68,50‘梅花’,185,26,92
任務(wù)一
按價格升序顯示商品
活動4算法設(shè)計與實現(xiàn)假設(shè)有n個簽字筆銷售數(shù)據(jù),冒泡排序的算法描述如下:(1)進(jìn)行n-1趟“冒泡”過程,每趟操作如步驟(2)和(3),如果未完成則繼續(xù)進(jìn)行操作。第1趟的冒泡范圍是n個數(shù)據(jù)(2)從第1個數(shù)據(jù)開始,依次比較相鄰兩個數(shù)據(jù),如果逆序則交換位置,直到比較完最后兩個數(shù)。冒泡范圍內(nèi)的最大數(shù)據(jù)會被交換到最后的位置上。(3)將本趟的最大數(shù)據(jù)排除出“冒泡”操作范圍。根據(jù)上述算法,定義冒泡排序函數(shù)bubbleSort(alist,key),參數(shù)alist表示需要排序的線性表,key表示排序的關(guān)鍵詞。請補(bǔ)全下面的代碼。
任務(wù)一
按價格升序顯示商品
活動4算法設(shè)計與實現(xiàn)16.#冒泡排序算法17.defbubbleSort(alist,key):
18.foriinrange(alist.size()-1):
#控制“冒泡”趟數(shù)19.#控制“冒泡”范圍20.forjinrange(1,alist.size()-i):
21.#相鄰兩數(shù)比較22.ifgetattr(
,key)>getattr(alist.getItem(j),key):23.temp=alist.getItem(j-1)24.alist.setItem(j-1,alist.getItem(j))25.alist.setItem(j,
)
#交換位置alist.getItem(j-1)temp
任務(wù)二
按銷量降序顯示商品
活動1體驗直接插入排序過程如何將表中的所有數(shù)據(jù)按照銷量從高到低進(jìn)行排序呢?第1個簽字筆銷售數(shù)據(jù)已經(jīng)有序,把待排序的簽字筆銷售數(shù)據(jù)按照銷量插入到有序序列的合適位置,有序數(shù)據(jù)就增加1個。這樣迭代若干次后,直到所有的待排序簽字筆銷售數(shù)據(jù)插入完為止,排序就完成了。比較插入
任務(wù)二
按銷量降序顯示商品
活動1體驗直接插入排序過程銷量是80的簽字筆銷售數(shù)據(jù)是有序子序列,把銷量為188的簽字筆銷售數(shù)據(jù)插入。比較80和188的大小,80<188,將銷量為80的簽字筆銷售數(shù)據(jù)后移一個位置,將銷量為188的簽字筆銷售數(shù)據(jù)插入到它的前面。第1次迭代后銷量的序列是:188,80,236,200,56,185。第1次迭代
任務(wù)二
按銷量降序顯示商品
活動1體驗直接插入排序過程第2次迭代:插入銷量為236的簽字筆銷售數(shù)據(jù),從有序子序列(188,80)的最后1個數(shù)據(jù)開始,將銷量為236的簽字筆銷售數(shù)據(jù)與序列中的數(shù)據(jù)逐一比較大小,確定插入位置。比較80和236,80<236。將銷量為80的簽字筆銷售數(shù)據(jù)后移一個位置;比較188和236。188<236,將銷量為188的簽字筆銷售數(shù)據(jù)后移一個位置,將銷量為236的簽字筆銷售數(shù)據(jù)插入到它的前面。經(jīng)過兩次比較后確定位置并插入,第2次迭代后銷量的序列是:236,188,80,200,56,185。第2次迭代
任務(wù)二
按銷量降序顯示商品
活動1體驗直接插入排序過程請在下面的橫線上依次寫出其他各次迭代的結(jié)果。第3次迭代::插入
,迭代后銷量的序列是:
;
第4次迭代:插入
,迭代后銷量的序列是:
;第5次迭代:插入
,迭代后銷量的序列是:
;經(jīng)過5次迭代,最后完成了6個簽字筆銷售數(shù)據(jù)按照銷量降序排列。填一填200236,200,188,80,56,18556236,200,188,80,56,185185236,200,188,185,80,56
任務(wù)二
按銷量降序顯示商品
活動1體驗直接插入排序過程直接插入排序(straightinsertionsort)是一種通過“比較一插入進(jìn)行排序的方法?;静僮魇菑挠行蜃有蛄械淖詈笠粋€數(shù)據(jù)開始,待排序的數(shù)據(jù)與有序子序列中的所有數(shù)據(jù)逐一進(jìn)行比較,確定插入的位置并插入數(shù)據(jù)。上述過程稱作一次插入操作,其結(jié)果是將一個數(shù)據(jù)插入到已經(jīng)排好序的數(shù)據(jù)序列中,從而得到一個新的、數(shù)據(jù)數(shù)量增加一個的有序子序列。對未排序的數(shù)據(jù)進(jìn)行相同的操作,重復(fù)若干次插入操作,直到所有的未排序數(shù)據(jù)插入完為止,則插入排序完成。直接插入排序
任務(wù)二
按銷量降序顯示商品
活動2直接插入排序算法的設(shè)計與實現(xiàn)分析活動1中排序過程和直接插入排序的基本思想,假設(shè)有n個簽字筆銷售數(shù)據(jù),實現(xiàn)直接插入排序的算法描述如下:(1)進(jìn)行n-1次插入操作,每次操作如步驟(2)和(3),如果未完成則繼續(xù)進(jìn)行。默認(rèn)第1個數(shù)據(jù)是有序子序列。(2)取得當(dāng)前待排序數(shù)據(jù),從有序數(shù)據(jù)序列的最后一個數(shù)據(jù)開始,待排序數(shù)據(jù)與其逐一進(jìn)行比較,如果大于對方則后移該數(shù)據(jù),確定插入位置。(3)將待排序數(shù)據(jù)插入到有序數(shù)據(jù)序列中。
任務(wù)二
按銷量降序顯示商品
活動2直接插入排序算法的設(shè)計與實現(xiàn)根據(jù)上述算法,定義insertionSort(alist,key)函數(shù),參數(shù)alist表示要排序的線性表,key表示排序的關(guān)鍵詞。請補(bǔ)全下面的代碼。16.#直接插入排序算法17.definsertionSort(alist,key):18.#默認(rèn)第1個數(shù)據(jù)已有序,控制插入次數(shù)19.foriinrange(1,alist.size()):20.currentdata=alist.getItem(i)
#取當(dāng)前待排序數(shù)據(jù)21.j=i22.#與待排序數(shù)據(jù)進(jìn)行比較
任務(wù)二
按銷量降序顯示商品
活動2直接插入排序算法的設(shè)計與實現(xiàn)23.whilej>andgetattr(alist.getItem(j-1),key)<24.getattr(
)25.alist.setItem(j,alist.getItem(j-1))
#后移數(shù)據(jù)26.j=j-1
#確定插入位置27.alist.setItem(j,
)#插入數(shù)據(jù)currentdata,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 俄羅斯解協(xié)議書
- 租賃合同廉潔協(xié)議
- 假山造景協(xié)議書
- 應(yīng)答澆注機(jī)協(xié)議書
- 倉庫聯(lián)防協(xié)議書
- 入股藥店協(xié)議書
- 位工會合同范本
- 醫(yī)療輸液協(xié)議書
- 空運費協(xié)議書模板
- 影樓模特合同協(xié)議
- 2025年文職倉庫保管員考試題及答案
- 2025年山東單招試題歸總及答案
- 北京八中2026屆高二物理第一學(xué)期期末考試模擬試題含解析
- 2026年湖南鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試必刷測試卷附答案
- 2025年重慶市大渡口區(qū)事業(yè)單位考試試題
- 管道施工圍擋施工方案
- 銷售費用申請與報銷流程標(biāo)準(zhǔn)化手冊
- 城市綠化生態(tài)修復(fù)項目實施方案
- 小學(xué)數(shù)學(xué)奧賽8-10-火柴棒游戲.教師版
- 西藏酥油茶的課件
- 安裝預(yù)制檢查井施工方案
評論
0/150
提交評論