亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Matlab的選擇排序算法教學(xué)設(shè)計

        2022-11-10 02:25:52衛(wèi)澤剛張小丹趙軍娣劉飛錢
        科技視界 2022年22期
        關(guān)鍵詞:編程語言賦值代碼

        衛(wèi)澤剛張小丹* 趙軍娣劉 飛錢 郁

        (1.寶雞文理學(xué)院物理與光電技術(shù)學(xué)院,陜西 寶雞 721016;2.寶雞高新鳳師實驗小學(xué),陜西 寶雞 721016)

        0 引言

        Matlab和C語言都是面向工科專業(yè)開設(shè)的編程語言類專業(yè)基礎(chǔ)課,相對于C語言,Matlab操作更方便,編程語法更簡單,因此更易于學(xué)生學(xué)習(xí)。同時,Matlab也與其他編程語言有很多語法相通的地方,學(xué)好Matlab一方面可以提高學(xué)生的編程技能,加深對“軟件程序”這一概念的理解,另一方面還能對學(xué)習(xí)其他編程語言起到理解促進作用。排序作為計算機軟件數(shù)據(jù)處理中最基本的操作之一,已成為計算機編程語言學(xué)習(xí)的重要內(nèi)容,其中對不同排序方法的理解與編程實現(xiàn)也是測試學(xué)生是否掌握編程語言學(xué)習(xí)的重要手段。因此,為了更好地使學(xué)生理解、掌握排序方法的排序過程,很多教學(xué)工作者研究了多種有效的教學(xué)手段。例如,張文慧著重分析了冒泡排序方法的特點,并以數(shù)據(jù)排序問題引導(dǎo)學(xué)生學(xué)會主動思考問題,并學(xué)會對問題進行總結(jié)歸納,培養(yǎng)學(xué)生獨立思考與總結(jié)能力;曹春梅等通過引導(dǎo)學(xué)生對冒泡排序及其改進算法的學(xué)習(xí),著重提高學(xué)生的程序設(shè)計能力,可為相關(guān)算法與程序設(shè)計方面的進一步學(xué)習(xí)和研究打下良好基礎(chǔ)。本文針對非計算機專業(yè)Matlab語言與應(yīng)用課程教學(xué)過程設(shè)計了循序漸進、由淺入深、難點分析、拓展練習(xí)的遞進式選擇排序教學(xué)過程,首先通過簡單形象例子詳細介紹了選擇排序算法的過程,其次用Matlab進行編程代碼實現(xiàn),針對代碼難點進行重點分析,最后設(shè)計了兩個拓展練習(xí)題,加深學(xué)生對選擇排序算法的理解,并培養(yǎng)學(xué)生根據(jù)項要求獨立編寫程序的能力。

        1 選擇排序算法教學(xué)設(shè)計

        1.1 選擇排序算法過程

        選擇排序算法是一種簡單直觀、易于學(xué)習(xí)的排序方法,其詳細排序過程(以升序排序為例)為:對于待排序數(shù)據(jù),首先遍歷并比較所有數(shù)據(jù),找到最小值后與第一個數(shù)據(jù)進行交換,此時第一個位置的數(shù)據(jù)就是所有數(shù)據(jù)中的最小值。然后再從第二個位置開始繼續(xù)尋找最小值,與第二個位置上的數(shù)據(jù)進行交換。以此類推,直到所有數(shù)據(jù)處理完畢。由于每次都選擇剩余數(shù)據(jù)中的最小值進行交換,因此稱此方法排序為選擇排序。

        用一個簡單的例子對選擇排序過程進行詳細講解,加深學(xué)生對選擇排序的理解。如圖1所示,假如要對五個數(shù)據(jù)進行排序,五個待排序數(shù)據(jù)為:16、19、15、39、8。要求使用選擇排序方法對它們進行升序排序。首先進行第一趟排序,選取所有數(shù)據(jù)中的最小值8,并與第一個位置上的數(shù)據(jù)16交換,此時第一趟排序結(jié)束。然后進行第二趟排序,從第二個位置開始選取剩余數(shù)據(jù)(19、15、39、16)中的最小值15,再與第二個位置上的數(shù)據(jù)19進行交換,此時第二趟排序結(jié)束,且前兩個位置上的數(shù)據(jù)已排好序。然后進行第三趟排序,從第三個位置開始選取剩余數(shù)據(jù)(19、39、16)中的最小值16,與第三個位置上的數(shù)據(jù)19進行交換,此時第三趟排序結(jié)束,且前三個位置上的數(shù)據(jù)已排好序。然后進行第四趟排序,從第四個位置開始選取剩余數(shù)據(jù)(39、19)中的最小值19,與第四個位置上的數(shù)據(jù)39進行交換,此時第四趟排序結(jié)束,且前四個位置上的數(shù)據(jù)已排好序。第四趟排序后只剩下一個數(shù)據(jù)39,即為數(shù)據(jù)中的最大值,不需要進行額外操作,此時排序結(jié)束。圖1共排序四趟,即可得到最終的排序結(jié)果:8、15、16、19、39。圖1中綠色數(shù)字表示每一趟排序后已經(jīng)排好序的數(shù)據(jù)部分。根據(jù)圖1可以得出,若數(shù)據(jù)的總個數(shù)為n,則需要n-1趟完成對整個數(shù)據(jù)的排序。

        圖1 選擇排序示例(綠色數(shù)字表示每一趟排序后已經(jīng)排好序的數(shù)據(jù)部分)

        1.2 選擇排序代碼實現(xiàn)

        通過上述對選擇排序算法的過程分析和實例的詳細圖解,可以將選擇排序每一趟操作過程總結(jié)為兩個步驟:(1)在剩余未排序數(shù)據(jù)中找到最小值;(2)用最小值與未排序數(shù)據(jù)的第一個數(shù)進行交換?;诖耍x擇排序的操作就轉(zhuǎn)化為在數(shù)據(jù)中尋找最小值后再與數(shù)據(jù)進行交換的問題。其中找最小值可以使用打擂臺法,即按順序和后面的數(shù)據(jù)依次進行數(shù)值大小比較,選出最小值。數(shù)據(jù)交換問題可以用Matlab的元素賦值操作完成。結(jié)合以上分析,選擇排序的Matlab編程實現(xiàn)代碼如下:

        function out=selectSort(data)%輸入待排序數(shù)據(jù)data,輸出排好序的out

        n=length(data);%求取待排序數(shù)據(jù)的總個數(shù)n

        for i=1:n-1 %外循環(huán),總的排序趟數(shù):n-1

        min_num=data(i);%每一趟先取第一個數(shù)據(jù)作為最小值

        min_index=i;%存取最小值的索引位置

        for j=i+1:n %打擂臺法,與后面的數(shù)據(jù)依次比較大小

        if min_num>data(j)%與每個數(shù)據(jù)比較大小

        min_num=data(j);%存取最小值

        min_index=j;%存取最小值的數(shù)據(jù)索引

        end

        end

        temp=data(min_index);%提取最小值

        data(min_index)=data(i);%數(shù)據(jù)交換

        data(i)=temp;%數(shù)據(jù)交換

        end

        out=data;%輸出排好序的數(shù)據(jù)

        end

        1.3 代碼難點及分析

        上述代碼以函數(shù)定義的形式對選擇排序算法進行編程實現(xiàn),最直觀地體現(xiàn)了選擇排序的排序過程。其中有以下兩處代碼是學(xué)生難以理解的。(1)代碼第四行最小值賦值,有很多學(xué)生不理解為什么最小值初值選取數(shù)據(jù)的第i個元素。主要原因在于沒有理解排序算法每一趟最小值的選取問題。每一趟的最小值選取采用打擂臺方法,即把當(dāng)前值(min_num)先作為最小值,然后再與后面的數(shù)據(jù)“打擂臺”,即依次比較大小,如果比當(dāng)前最小值(min_num)小,就交換數(shù)據(jù),否則不交換數(shù)據(jù)。通過與每個數(shù)據(jù)比較后即可將最小值選取出來。(2)數(shù)據(jù)交換過程(第12、13、14行)為什么要先定義一個臨時變量(temp)而不是直接對兩個數(shù)據(jù)進行賦值。這主要原因在于沒有將Matlab的賦值操作與現(xiàn)實問題有效結(jié)合。學(xué)生們都能直觀地理解交換兩個數(shù)據(jù)的概念,但是將其用編程語言實現(xiàn)就需要一定的“技巧”,如果直接按照以下代碼操作:data(min_index)=data(i);data(i)=data(min_index);,就會把原來data(min_index)數(shù)據(jù)丟掉,造成的結(jié)果就是data(min_index)和data(i)都變成同一個數(shù)據(jù)了。而通過提前定義一個臨時變量temp,就可以將最小值data(min_index)先保存起來,再賦值給變量data(i),完成數(shù)據(jù)的交換。

        1.4 拓展練習(xí)設(shè)計

        為進一步提高學(xué)生對選擇排序算法的理解與編程能力,在完全理解上述代碼排序的基礎(chǔ)上,增加以下兩個問題讓學(xué)生進行拓展訓(xùn)練:(1)在2.2節(jié)代碼基礎(chǔ)上修改,完成選擇排序算法的降序排序過程,即將數(shù)據(jù)從大到小進行排序。(2)上述代碼會改變原始數(shù)據(jù)的排列,如何新建一個同樣大小的數(shù)組a,將每一趟選取的最小值依次放入數(shù)組a中并輸出,以保證原始數(shù)據(jù)未被修改。第一個拓展練習(xí)題用類似的代碼編程方式完成降序排序過程,可以加深學(xué)生對排序算法的理解。第二個拓展練習(xí)題可以提高學(xué)生的編程能力,如何根據(jù)項目需求進行思考,再將思考過程轉(zhuǎn)化成具體的代碼,同時可以讓學(xué)生們深刻認(rèn)識到,實現(xiàn)相同的排序功能,代碼編寫方式可以是不一樣的。

        2 結(jié)語

        Matlab是一門應(yīng)用性很強的實踐性課程,必須結(jié)合具體問題開展課程教學(xué)。本文以排序算法中簡單直觀的選擇排序算法入手,采用分階段、逐步遞進、難點分析、拓展練習(xí)的思路對選擇排序方法進行了詳細介紹,由淺入深、循序漸進,針對學(xué)生難以理解的代碼難點進行了深入分析,降低了學(xué)生用Matlab編寫選擇排序程序的難度。最后用兩個拓展練習(xí),強化學(xué)生對選擇排序算法的理解,同時提高學(xué)生根據(jù)問題需求,編寫代碼解決問題的能力。

        猜你喜歡
        編程語言賦值代碼
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        壓力-體積轉(zhuǎn)換在CFC編程語言中的實現(xiàn)解析
        Java編程語言的特點與應(yīng)用
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        強賦值幺半群上的加權(quán)Mealy機與加權(quán)Moore機的關(guān)系*
        淺談不同編程語言對計算機軟件開發(fā)的影響
        電子制作(2018年1期)2018-04-04 01:48:36
        无码a∨高潮抽搐流白浆| 伊人影院综合在线| 久久中文字幕久久久久| 国产福利片无码区在线观看| 国产肥熟女视频一区二区三区| 中文字幕午夜精品久久久| 少妇人妻综合久久中文字幕| 天美传媒一区二区| 98在线视频噜噜噜国产| 色综久久综合桃花网国产精品| 在线观看日本一区二区三区四区| 亚洲日韩一区精品射精| 91av手机在线观看| 亚洲综合免费在线视频| 91精品国产色综合久久 | 无码午夜成人1000部免费视频| 亚洲精品国产精品国自产观看| 国产超碰人人一区二区三区| 久久91精品国产一区二区| 色费女人18毛片a级毛片视频| 50岁熟妇的呻吟声对白| 国产91对白在线观看| 亚洲av有码精品天堂| 国产人妻久久精品二区三区老狼| 精品人妻大屁股白浆无码| 在线播放亚洲第一字幕| 久久九九青青国产精品| 青青草一级视频在线观看| 亚洲av专区一区二区| 久久久久夜夜夜精品国产 | 亚洲—本道中文字幕久久66| 一片内射视频在线观看| 日韩肥臀人妻中文字幕一区| 香港三级精品三级在线专区| 日本亚洲欧美在线观看| 国产91成人自拍视频| 电影内射视频免费观看| 亚洲免费人成在线视频观看| 亚洲一区二区在线视频播放| 一本色道久久88加勒比—综合| 久久99精品久久久久麻豆|