《高中數(shù)學(xué) 排序問(wèn)題課件 北師大必修3》由會(huì)員分享,可在線閱讀,更多相關(guān)《高中數(shù)學(xué) 排序問(wèn)題課件 北師大必修3(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、排序問(wèn)題排序問(wèn)題 在日常生活中,人們經(jīng)常要把一些記在日常生活中,人們經(jīng)常要把一些記錄中的數(shù)據(jù)排序,如招生錄取中按照成錄中的數(shù)據(jù)排序,如招生錄取中按照成績(jī)對(duì)考生進(jìn)行排序,漢字拼音檢索中按績(jī)對(duì)考生進(jìn)行排序,漢字拼音檢索中按照字母順序?qū)h字進(jìn)行排序等等。排序照字母順序?qū)h字進(jìn)行排序等等。排序就是按照一定的規(guī)則,對(duì)數(shù)據(jù)加以排列就是按照一定的規(guī)則,對(duì)數(shù)據(jù)加以排列整理,從而提高查找效率整理,從而提高查找效率(1)直接插入排序法:)直接插入排序法:(2)冒泡排序法:)冒泡排序法: (1)直接插入排序法:)直接插入排序法: 直接插入法就是把直接插入法就是把a(bǔ)1作第一個(gè)數(shù),用作第一個(gè)數(shù),用a2與與a1比較,如果
2、比較,如果a2a1,則將兩個(gè)數(shù)交,則將兩個(gè)數(shù)交換位置,這時(shí)兩個(gè)數(shù)中最小換位置,這時(shí)兩個(gè)數(shù)中最小 數(shù)是數(shù)是a1; 然后從然后從a3開(kāi)始,與開(kāi)始,與a1, a2依次進(jìn)行比較,依次進(jìn)行比較,如果如果a3小,也將兩個(gè)數(shù)交換位置,繼續(xù)小,也將兩個(gè)數(shù)交換位置,繼續(xù)比較,比較完第二趟后,那么這三個(gè)數(shù)比較,比較完第二趟后,那么這三個(gè)數(shù)按從小到大排好按從小到大排好;,直到直到n個(gè)數(shù)排完為止。個(gè)數(shù)排完為止。例如,給定例如,給定5個(gè)數(shù)個(gè)數(shù)5,4,3,8,7;第一次第一次5與與4比,結(jié)果是比,結(jié)果是4,5;第二次第二次3與與4比,結(jié)果是比,結(jié)果是3,5,4; 4與與5比,結(jié)果是比,結(jié)果是3,4,5;最后的結(jié)果是最后的
3、結(jié)果是3,4,5,7,8.開(kāi)始開(kāi)始輸入輸入n,a(1),a(n)結(jié)束結(jié)束i=2i=n輸出輸出a(1),a(n)i=i+112是是否否ja(i)a(j)=ma(i)=a(j)m=a(i); 是是否否是是否否n=input(“n=”);a=zeros(1,n); for i=1:1:n a(i)=input(“a(i)=”);end for i=2:1: n for j=1:1: i1 if a(j)a(i), m=a(i); a(i)=a(j);a(j)=m; end end end for k=1:1: n print(%io(2), a(k)end (2)冒泡排序法:)冒泡排序法: 冒泡排序
4、法是形象的表示,水泡輕的向冒泡排序法是形象的表示,水泡輕的向上冒,重的石頭向下沉。上冒,重的石頭向下沉。 在每一趟排序中,從在每一趟排序中,從(a1,a2)開(kāi)始,每相開(kāi)始,每相鄰的兩個(gè)數(shù)都進(jìn)行依次比較大小,把小的鄰的兩個(gè)數(shù)都進(jìn)行依次比較大小,把小的數(shù)放在前面,大的數(shù)放在后面,數(shù)放在前面,大的數(shù)放在后面, 這樣把這樣把(a1,a2), (a2,a3), (an1,an)一趟比較結(jié)束時(shí),一趟比較結(jié)束時(shí),an一定是最大的。一定是最大的。 這樣繼續(xù)比較第二趟,這時(shí)這樣繼續(xù)比較第二趟,這時(shí)an1一定一定是第二大的;是第二大的; 當(dāng)進(jìn)行了當(dāng)進(jìn)行了n1趟后,所有的數(shù)的大小趟后,所有的數(shù)的大小順序就排好了。順
5、序就排好了。例如例如5個(gè)數(shù):個(gè)數(shù):7,8,3,5,4;第一趟后:第一趟后:7,3,5,4,8;第二趟后:第二趟后:3,5,4,7,8;第三趟后:第三趟后:3,4,5,7,8;開(kāi)始開(kāi)始輸入輸入n,a(1),a(n)結(jié)束結(jié)束w=1w=n1輸出輸出a(1),a(n)w=w+112是是否否ia(i+1)a(i)=ma(i+1)=mm=a(i); 是是否否是是否否n=input(“n=”);a=zeros(1, n); for i=1:1: n, a(i)=input(“a(i)=”);end w=1while wa(i+1) ,m=a(i);a(i)=a(i+1);a(i+1)=m;end end w=w+1;endfor k=1:1: n print(%io(2), a(k)end