關於《演算法與程式設計》之對分查詢演算法的質疑與對策

2022-04-30 17:45:02 字數 885 閱讀 7216

【摘要】浙江省教育出版社普通高中課程標準實驗教科書《演算法與程式設計》中關於對分查詢演算法的內容存在有明顯的邏輯錯誤。針對課本中的疑問,如何化解學生的疑慮,引導學生學習、理解和掌握對分查詢演算法的思想和方法,從而培養學生獨立思考、不迷信教材、不迷信權威的科學學習態度和鑽研精神,我們對教材中對分演算法進行了補充與完善,並對《演算法與程式設計》教材結構作出相應的調整。

【關鍵詞】演算法與程式設計;對分查詢;教材體系

浙江教育出版社出版的普通高中課程標準實驗教科書《演算法與程式設計》p40-p43有關對分查詢是這樣描述的(因篇幅關係不是教材中的原文,為意思概括):

在陣列中的資料是有序的,如果是增序的,是指下標越小的陣列元素中儲存的資料也越小,減序則相反。設陣列變數d中儲存了n個互不相同的資料,並且陣列變數d中的資料是增序的,則有:d(1)d(m)由與①相同的理由,必須在新的範圍(m+1,j)中繼續查詢。

演算法流程圖如下(圖1):

依照上述描述和流程圖我們不難發現如下疑問:

疑問1:如果我們要查詢的數即是d(i)或d(j),應用以上的查詢方法其結果將始終是0「未找到,結果:0」,是錯誤的。

疑問2:

計算中點m=(i+j)/2所得結果不一定的整數,當是小數時如何處理?大家都知道兩自然數的和有這樣幾種情況:兩奇數之和、兩偶數之和均為偶數,它們的中點是乙個整數,乙個奇數與乙個偶數之和為奇數,它的中點是乙個小數,作為陣列的下標不能是小數;

疑問3:當d(m)key時,i=m+1。此結果對於當m為一整數時,結論是正確的,但當m是不是整數是時,比如m=25.

5時,執行m-1,j的值就應該是24.5,這樣就將漏掉陣列下標為24的d(24)查詢;同樣道理執行m+1時,i的值應該是24.5,同樣也將泥質陣列下標為24的d(24)的資料的查詢。

從而造成遺漏,使得最終結果有可能出現資料範圍內有的資料查詢不出來。

演算法與程式設計實習報告

報告班級 姓名 李明 學號 12345678 第一題一 題目 一 題目 統計字母的使用頻率 二 目的與要求 1 目的 通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立 歸納總結的能力。2 基本要求 1 要...

演算法與程式設計實習報告

第一題 統計字母的使用頻率 一 題目 統計字母的使用頻率 目的與要求 1.目的 通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立 歸納總結的能力。2.基本要求 1 要求用c語言程式設計,在visual c...

演算法與程式設計實習報告

題1 統計字母的使用頻率 一 題目 統計字母的使用頻率 目的與要求 1.目的 通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立 歸納總結的能力。2.基本要求 1 要求用c語言程式設計,在visual c ...