?

重典型應用,明結構關系

2020-12-08 02:22李維明
中國信息技術教育 2020年22期
關鍵詞:數據結構排序算法

李維明

通過前幾期對“數據及其價值”“數據結構”內容及特點的討論,知道了數據結構對改變算法設計、提升算法效率有著重要的作用。相應地,在“數據及其價值”“數據結構”的教學上也應采取注重數據價值、關注結構作用的策略。在此基礎上,還應該關注數據結構的實際應用,關注結構應用對算法的改變效果,同時也要厘清算法與數據結構的區別與聯系。

● 注重典型應用,了解數據結構對算法的作用

在《普通高中信息技術課程標準(2017年版2020修訂)》(以下簡稱《標準》)“數據與數據結構”模塊中,涉及的數據結構類型并不多,因而與其相關的算法應用也不多,主要有迭代與遞歸、查找與排序等,而在這些應用中,最熟悉的莫過于排名次(排序)了。教學時應當抓住這樣的實例,通過分析不同數據結構與排序方法的優劣,了解數據結構與算法之間的關系。

排序是指把一個任意序列的數據元素重新排列成按照某關鍵字遞增或遞減的過程,常見的排序方法有插入排序法(直接插入排序、折半插入排序等)、交換排序法(冒泡排序、快速排序等)等,而在教材中必講的方法之一就是冒泡排序。

冒泡排序是一種簡單的排序算法。假設待排數據元素有n個,用相鄰兩兩比較法第一次在n個數中找出最?。ɑ蜃畲螅?,第二次在n-1個數中找出最小數(或最大),第三次在n-2個數中找出最小數(或最大)……到第n-1次則完成排序。由于在此算法每趟排序的過程中值?。ɑ蛑荡螅┑脑叵蚯耙苿?,值大(或值?。┑脑叵蚝笠苿?,類似于水中氣泡上升,故稱為冒泡排序。在這里,冒泡排序使用的數據結構為順序存儲的結構,一般用一個二維數組存放,適合多次進行比較或交換。

從操作的角度看,排序是線性結構的一種操作,待排元素可以用順序結構和鏈式結構來存儲。在這兩種排序操作中,不管使用哪方法,都涉及對某種存儲結構數據的位置移動或鏈表改變。例如,某組數據采用的是順序結構存儲,其待排元素按自然順序存放在一組連續的內存空間中,排序時會移動元素位置,使之有序;如某組數據采用的是鏈式結構存儲,則排序時只需將無序鏈表中的元素進行比較,然后改變鏈表指針,使之變成有序鏈表。由此可以看出,數據元素的存儲結構不同,其算法也會發生改變,而這些改變也會影響算法的運算效率。

● 明晰基本關系,厘清數據結構與算法的聯系與區別

關于數據結構與算法的聯系,《標準》描述為“算法與數據結構是問題求解中相輔相成、不可分割的兩個方面”;而公式“算法+數據結構=程序”更是揭示了二者的緊密聯系。

算法總是要依賴某種數據結構來實現,往往是在發展一種算法的時,構建了適合這種算法的同數據結構。算法的操作對象是數據結構。算法的設計和選擇要同時結合數據結構,簡單地說數據結構的設計就是選擇存儲方式。算法設計的實質就是為要處理的數據選擇一種恰當的存儲結構,并在選定的存儲結構上設計一個好的算法。不同數據結構的設計將導致差異很大的算法。數據結構是算法設計的基礎,算法設計必須考慮到數據結構,算法設計不可能獨立于數據結構。另外,數據結構的設計和選擇需要為算法服務??傊?,算法的設計同時伴有數據結構的設計,兩者都是為最終解決問題服務的。

數據結構與算法的區別:數據結構關注的是數據的邏輯結構、存儲結構以及基本操作,而算法更多的是關注如何在數據結構的基礎上解決實際問題。算法是編程的思想,而數據結構則是這些思想的邏輯基礎。

《標準》在“學業要求”中明確了數據結構與算法教學的分寸,就是“能夠針對限定條件的實際問題進行數據抽象,運用數據結構合理組織、存儲數據,選擇合適的算法(如排序、查找、迭代等)編程實現、解決問題”。所以只要能抓住“限定條件的實際問題”典型應用,“運用數據結構合理組織、存儲數據”“選擇合適的算法”實現,就能夠很好地解決數據結構應用的教學問題。

猜你喜歡
數據結構排序算法
數據結構線上線下混合教學模式探討
恐怖排序
Travellng thg World Full—time for Rree
節日排序
學習算法的“三種境界”
算法框圖的補全
算法初步知識盤點
數據結構與算法課程設計教學模式的探討
高效學習數據結構
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合