日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

上标3下标6算法_插入排序算法导学案

發布時間:2025/4/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 上标3下标6算法_插入排序算法导学案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文為“選考VB算法專題系列講座9插入排序算法”視頻配套的導學案,請同學們先完成導學案再收看視頻。明天將推送“選考VB算法專題系列講座9插入排序算法”視頻,敬請期待!

插入排序算法導學案

一題目1.?某程序代碼如下:Const size = 20 '數組分配空間Dim a(1 To size) As IntegerDim i As Integer, n As Integer '數組實際長度Private Sub Command1_Click() Dim p As Integer, x As Integer x = Val(Text3.Text) '插入數據 p = Val(Text4.Text) '插入位置 If p > n Then p = n + 1 For i = n To p Step -1 a(i + 1) = a(i) Next i a(p) = x n = n + 1End Sub已知原數組長度n=5,其元素值依次為“48,36,24,97,77”?,先在文本框Text3和Text4中分別輸入3和4,點擊按鈕Command1后,數組的元素值依次為??????????????????? ;再在文本框Text3和Text4中分別輸入8和9,點擊按鈕Command1后,數組的元素值依次為??????????????????? 。2.?已知原數組長度n=5,其元素值依次為“4,6,7,9,12”?,要求插入新元素x=5以后,數組仍保持升序排列。下面的代碼能實現前述功能,請將缺失的代碼補充完整。Const size = 20 '數組分配空間Dim a(1 To size) As IntegerDim i As Integer, n As Integer '數組實際長度Private Sub Command2_Click() Dim p As Integer, x As Integer x = Val(Text3.Text) '插入數據 For p = 1 To n If a(p) > x Then ① Next p For i = n To p Step -1 a(i + 1) = ② Next i a(p) = ③ n = n + 1End Sub上述代碼設置了2個For循環結構,第一個For循環通過比較a(p)與x的值來定位插入位置p(p指向第一個大于x的元素下標或n+1),第二個For循環通過移位操作將x插入到p位置處。能否把比較和移位操作放到同一個For循環里?如果可以,該如何實現?3.?對存放原始數據的數組,從第2個元素開始,掃描左側的已排序區間,依次將待排序元素插入到正確位置。每趟處理一個元素,總共排序n-1趟。這種排序方式成為插入排序。下面的代碼能夠實現插入排序算法,請將缺失的代碼補充完整。Const n = 10Dim a(1 To n) As IntegerPrivate Sub Command3_Click() Dim x As Integer For i = 2 To n x = a(i) For j = i - 1 To 1 Step -1 If a(j) <= x Then ① a(j + 1) = ② Next j a(j + 1) = ③ Next iEnd Sub4.對存放原始數據的數組,從a(2)開始,掃描左側的已排序區間,依次將待排序元素插入到正確位置。每趟處理一個元素,總共排序n-1趟。這種排序方式成為插入排序。下面的代碼能夠實現插入排序算法,請將缺失的代碼補充完整。Const n = 10Dim a(0 To n) As IntegerPrivate Sub Command5_Click() For i = 2 To n a(0) = a(i): j = i - 1 Do While ① a(j + 1) = ② j = j - 1 Loop a(j + 1) = ③ Next iEnd Sub5.下面的代碼希望能夠實現插入排序算法,但當數組a(1)到a(10)的值依次為3,1,2,5時,程序運行系統報錯,錯在哪里?如何改進?Const n = 4Dim a(1 To n) As IntegerPrivate Sub Command4_Click() Dim x As Integer For i = 2 To n x = a(i): j = i - 1 Do While j >= 1 And x < a(j) a(j + 1) = a(j) j = j - 1 Loop a(j + 1) = x Next iEnd Sub6.?某程序代碼如下:Const n = 5Dim a(1 To n) As IntegerPrivate Sub Command6_Click() Dim t As Integer For i = 2 To n For j = i To 2 Step -1 If a(j - 1) > a(j) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t Else Exit For End If Next j Next iEnd Sub(1)若排序前數組元素a(1)到a(5)分別是“3,6,8,5,2”,則單擊按鈕Command1后,數組元素a(1)到a(5)分別是?????????????????? 。(2)題目代碼采用了雙重For循環嵌套結構,你能否將內層循環改成do循環結構。(3)上述代碼看上去和冒泡排序非常相似,但同時具備插入排序算法的某些特征,你覺得它更接近冒泡排序還是插入排序算法呢?為什么?二答案

1.?【答案】

(1)48,36,24,3,97,77?

(2)48,36,24,3,97,77,8

2.【答案】

① Exit For? ② a(i)? ③ x

參考代碼:

Private Sub Command2_Click() Dim x As Integer x = Val(Text3.Text) '插入數據 For i = n To 1 Step -1 If a(i) <= x Then Exit For a(i + 1) = a(i) Next i a(i + 1) = x n = n + 1End Sub

3.【答案】① Exit For? ② a(j)? ③ x

【解析】插入排序算法最重要的操作就是向左側已排序區間插入待排序元素。外層循環用來控制待排序元素位置,內層循環用來掃描已排序區間,為待排序元素騰出插入位置。

4.【答案】① a(0) < a(j)? ② a(j)? ③ a(0)

【解析】設置數組下標下界為0,既解決了數組下標越界問題(無需判斷j >= 1,j=0時循環自然結束),又可以使用a(0)作為輔助空間存儲a(i)的值一舉兩得。

5.【答案】程序運行,當j=0時會出現數組下標越界錯誤。解決數組下標越界問題有兩種方法:1.擴大數組下標下界;2.提前跳出循環。

方法一:擴大數組下標下界。把數組a的定義語句改成Dim a(0 To n) As Integer

方法二:提前跳出循環。當j=0時,跳出循環。參考代碼如下:

Const n = 4Dim a(1 To n) As IntegerPrivate Sub Command4_Click() Dim x As Integer For i = 2 To n x = a(i): j = i - 1 Do While x < a(j) '無需判斷j >= 1,j=0時循環結束 a(j + 1) = a(j) j = j – 1 If j = 0 Then Exit Do Loop a(j + 1) = x Next iEnd Sub

6. 【答案】(1)2, 3, 5, 6, 8

(2)參考代碼:

Const n = 5Dim a(1 To n) As IntegerPrivate Sub Command6_Click() Dim t As Integer For i = 2 To n j = i Do While a(j - 1) > a(j) t = a(j): a(j) = a(j - 1): a(j - 1) = t If j > 2 Then j = j - 1 Else Exit Do Loop Next iEnd Sub

(3)冒泡排序的本質特征是內層循環掃描待排序區間將最小值(或最大值)向左端(或右端)冒泡,交換操作只能發生在相鄰元素之間。

插入排序的本質特征是內層循環掃描已排序區間,將待排序元素插入(或交換)到正確位置。

二者的本質區別在于內層循環掃描的范圍,冒泡排序是掃描待排序區間,而插入排序是掃描已排序區間。

本題內層循環的掃描范圍的已排序區間,故更接近插入排序。

因為本題沒有設置臨時變量t來存儲待排序元素a(i),不能采用移位方式來插入a(i),所以只好采用交換相鄰元素的方式將a(i)放到正確位置,這種做法和低效的選擇排序相似,我們可以稱之為低效的插入排序算法。

需要本文word版的,可以加入“選考VB算法解析”知識星球參與討論和下載文件,“選考VB算法解析”知識星球匯集了數量眾多的同好,更多有趣的話題在這里討論,更多有用的資料在這里分享。

我們專注選考VB算法,感興趣就一起來!

相關優秀文章:

?2019年VB選考算法分析文章分類

選考VB算法專題系列講座0課程簡介

總結

以上是生活随笔為你收集整理的上标3下标6算法_插入排序算法导学案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。