![C程序設(shè)計(jì)課件4.6_第1頁](http://file4.renrendoc.com/view/b7c07ad99a2abe8d24269f2bb184047f/b7c07ad99a2abe8d24269f2bb184047f1.gif)
![C程序設(shè)計(jì)課件4.6_第2頁](http://file4.renrendoc.com/view/b7c07ad99a2abe8d24269f2bb184047f/b7c07ad99a2abe8d24269f2bb184047f2.gif)
![C程序設(shè)計(jì)課件4.6_第3頁](http://file4.renrendoc.com/view/b7c07ad99a2abe8d24269f2bb184047f/b7c07ad99a2abe8d24269f2bb184047f3.gif)
![C程序設(shè)計(jì)課件4.6_第4頁](http://file4.renrendoc.com/view/b7c07ad99a2abe8d24269f2bb184047f/b7c07ad99a2abe8d24269f2bb184047f4.gif)
![C程序設(shè)計(jì)課件4.6_第5頁](http://file4.renrendoc.com/view/b7c07ad99a2abe8d24269f2bb184047f/b7c07ad99a2abe8d24269f2bb184047f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
選擇排序思想對(duì)整數(shù)序列{70,83,100,65,10,32,7,65,9},用簡單選擇排序法進(jìn)行升序排序。排序過程演示【例1】用選擇排序法將數(shù)組a中的N個(gè)整型數(shù)升序排序。第1趟:下標(biāo)為0的元素依次與其后面的元素比較,逆序則交換,最終將N個(gè)數(shù)中的最小數(shù)存放到下標(biāo)為0的位置。第2趟:下標(biāo)為1的元素依次與其后面的元素比較,逆序則交換,最終將N-1個(gè)數(shù)中的最小數(shù)存放到下標(biāo)為1的位置。
如此下去,直到剩下一個(gè)最大數(shù)在下標(biāo)為N-1的位置。830123456787083100651032765970831006510327659100100100779791079103279103265791032656579103265657083701006532106598370100653210658370100653265837010065658370657083第1趟:第2趟:第3趟:第4趟:第5趟:第6趟:第7趟:第8趟:思考題:對(duì)N個(gè)整數(shù)排序,需要多少趟?每趟比較多少次?為了避免過多地交換記錄,需對(duì)算法進(jìn)行改進(jìn)第1趟:從N個(gè)元素中找出值最小元素,并與第一個(gè)元素值交換。第2趟:從剩下N-1元素中找出值最小元素,并與第二個(gè)元素值交換。如此下去,直到剩下一個(gè)最大數(shù)在第N個(gè)元素中存放。
#include"stdio.h"#defineN10voidmain(){inti,j,a[N],t;for(i=0;i<N;i++)scanf("%d",&a[i]);
for(=0;i<N-1;i++){}for(i=0;i<N;i++)printf("%4d",a[i]);}for(j=i+1;j<N;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}i選擇排序程序/*輸入N個(gè)待排序的數(shù)*//*排序*//*輸出排序后的N個(gè)數(shù)*/0iN-1已排序的i個(gè)數(shù)據(jù)7010010065100831070836532
65
971070831006532
65
9701234567810701006532
65
97第1趟:第2趟:第3趟:708310032
65
97第4趟:1070836532
65
97第5趟:1070836532
65
97第6趟:10836510032
65
97第7趟:1070836510032
65
97第8趟:
對(duì)整數(shù)序列{70,83,100,65,10,32,7,65,9},用改進(jìn)的簡單選擇排序法進(jìn)行升序排序。10改進(jìn)后排序過程演示思考題:對(duì)N個(gè)整數(shù)排序,需要多少趟?每趟交換多少次?改進(jìn)后選擇排序程序#defineN10#include"stdio.h"voidmain(){inti,j,k,a[N],t;for(i=0;i<N;i++)/*輸入N個(gè)待排序的數(shù)*/scanf("%d",&a[i]);
for(=0;i<N-1;i++)/*排序總共進(jìn)行N-1趟*/{}for(i=0;i<N;i++)/*輸出排序后的N個(gè)數(shù)*/printf("%4d",a[i]);}k=i;/*初始化最小數(shù)的下標(biāo)*/for(j=i+1;j<N;j++)/*尋找最小數(shù)下標(biāo)*/if(a[j]<a[k])k=j;/*記錄新的最小數(shù)下標(biāo)*/if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}/*第i個(gè)數(shù)和最小數(shù)交換*/i程序1?0iN-1已排序的i個(gè)數(shù)據(jù)起泡排序思想
已知整數(shù)序列{70,83,100,65,10,32,7,65,9},采用起泡排序法進(jìn)行升序排序。第1趟:從下標(biāo)為0的元素開始,相鄰兩元素比較,若前者大于后者,交換兩個(gè)元素的值,反復(fù)執(zhí)行N-1次,結(jié)果最大數(shù)存入第N個(gè)元素。第2趟:對(duì)前N-1個(gè)元素進(jìn)行同樣的操作,反復(fù)執(zhí)行N-2次,
結(jié)果次最大數(shù)存入第N-1個(gè)元素。如此下去,直到剩下一個(gè)最小數(shù)在第一個(gè)元素中存放?!纠?】用起泡排序法將數(shù)組a中N個(gè)整型數(shù)升序排序。排序過程演示7070831006510101010101010765977777776565656599999998370656532323232323265﹤﹤﹥﹥﹥﹥﹥﹥﹤﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹥﹦﹥﹤﹥﹤﹥﹥﹤﹥﹤﹥初始值第1趟第2趟第3趟第4趟第5趟第6趟第7趟第8趟12345678910010765983706532﹤起泡排序程序#include"stdio.h"#defineN10voidmain(){inti,j,a[N],t;/*輸入待排序的數(shù)據(jù)*/for(i=0;i<N;i++)scanf("%d",&a[i]);/*排序*/
for(=0;i<N-1;i++)/*進(jìn)行N-1趟排序*/{
}/*輸出排序后的數(shù)據(jù)*/for(i=0;i<N;i++)printf("%4d",a[i]);}程序2?for(j=0;j<N-i-1;j++)/*進(jìn)行N-i-1次相鄰元素比較*/if(a[j]>a[j+1])/*若前者大于后者,則交換*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}i0N-i-1N-1已排序的i個(gè)數(shù)據(jù)若初始序列已有序,則沒有必要進(jìn)行n-1趟掃描。#include"stdio.h"#defineN10voidmain(){inti,j,a[N],t,flag=1;for(i=0;i<N;i++)/*輸出待排序的N個(gè)數(shù)據(jù)*/scanf("%d",&a[i]);
for(i=0;flag==1&&i<N-1;i++)/*前一趟有交換,flag=1;否則,flag=0*/{flag=0;for(j=0;j<N-i-1;j++)/*進(jìn)行N-i-1次相鄰元素比較*/if(a[j]>a[j+1])/*若前者大于后者,則交換*/{t=a[j];a[j]=a[j+1];a[j+1]=t;flag=1;}}for(i=0;i<N;i++)/*輸出排序后的數(shù)據(jù)*/printf("%4d",a[i]);}改進(jìn)方法:若某一趟排序后沒有數(shù)據(jù)交換,則排序結(jié)束。改進(jìn)后選擇排序程序【例3】不用函數(shù)strcat(),將兩個(gè)字符串連接并輸出。#include"stdio.h"#include"string.h"voidmain(){chara[81],b[81],*p1,*p2;gets(a);gets(b);p1=a;p2=b;
while(*p1)p1++;/*p1指向a的結(jié)束標(biāo)志*/
while(*p2){*p1=*p2;p1++;p2++;}/*將b復(fù)制到a的尾部*/*p1='\0'
;/*字符串結(jié)束標(biāo)志*/puts(a);}程序3?ABCaDEF\0b\0\0DEFp1p2/*輸入*//*連接*//*輸出*/【例4】輸入一個(gè)英文句子,將每個(gè)英文單詞的頭字母變?yōu)榇髮?單詞之間用空格隔開。解析:若當(dāng)前字符不是空格,但它前面的字符為空格,表示新單詞開始,判斷當(dāng)前字母是否為大寫,若不是,將其變?yōu)榇髮?若當(dāng)前字符和前一個(gè)字符都不是空格,則是原來單詞的繼續(xù),不用判斷當(dāng)前字母的大小寫。#include"stdio.h"#include"string.h"voidmain(){chara[81],*p;intword=0;gets(a);
p=a;
while(*p){
}puts(a);}pword=01owreou\0yY(標(biāo)識(shí)當(dāng)前字符的前一個(gè)字符是否為空格)aAhHif(*p=='
')word=0;elseif(word==0){if(*p>='a'
&&*p<='z'
)*p-=32;word=1;}p++;/*輸入*//*處理*//*輸出*/程序4?【例5】輸出楊輝三角形的前10行。解析:用二維數(shù)組a來存放數(shù)據(jù),對(duì)數(shù)組中的元素a[i][j],若j>i,則a[i][j]的值不用,否則,按下列公式計(jì)算。11112113311464115101051161520156117213535217118285670562881193684126126843691#include"stdio.h"#defineN10voidmain(){inti,j,a[N][N];for(i=0;i<N;i++)for(j=0;j<=i;j++)
if(j==0||j==i)a[i][j]=1;elsea[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}}程序5?/*計(jì)算下三角陣值*//*輸出下三角陣值*/【例6】將4×4矩陣轉(zhuǎn)置并輸出。解析:
用一個(gè)二維數(shù)組a存放矩陣,下三角的a[i][j]與a[j][i]交換即可#include"stdio.h"#defineN4voidmain(){inti,j,a[N][N],t;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);
for(i=0;i<N;i++)for(j=0;j<i;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\n");}}程序6?/*輸入*//*轉(zhuǎn)置*//*輸出*/【例7】在一個(gè)N×N矩陣中填入1到N2的數(shù)字(N為奇數(shù)),使得每一列、每一行、每一條對(duì)角線的累加和都相等。
程序7?#include"stdio.h"#defineN3voidmain(){inta[N][N]={0},i,j,m;m=1;i=0;j=N/2;
while(m<=N*N){a[i][j]=m;m++;if(a[(i-1+N)%N][(j-1+N)%N]!=0)i=(i+1)%N;else{i=(i-1+N)%N;j=(j-1+N)%N;}}for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%5d",a[i][j]);printf("\n");}}123456789(1)由1開始填數(shù),將1放在第1行中間位置;(2)從當(dāng)前位置向
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025人教版初中七下數(shù)學(xué)湖北專版-第八章 章末復(fù)習(xí)(二)實(shí)數(shù)【課件】
- 大學(xué)生創(chuàng)業(yè)大賽裝修項(xiàng)目
- 多糖鐵復(fù)合物膠囊治療妊娠期缺鐵性貧血的效果
- 英語口語的全球影響
- 大創(chuàng)項(xiàng)目申請(qǐng)書預(yù)算
- 西方行政學(xué)說形成性考核冊(cè)作業(yè)答案
- 初級(jí)銀行業(yè)法律法規(guī)與綜合能力-2018年初級(jí)銀行從業(yè)資格考試《法律法規(guī)與綜合能力》真題匯編4
- 2025年單、雙長鏈烷基甲基叔胺項(xiàng)目指標(biāo)評(píng)估報(bào)告
- 初級(jí)個(gè)人理財(cái)-初級(jí)銀行從業(yè)資格《個(gè)人理財(cái)》押題密卷4
- 交通事故責(zé)任復(fù)核申請(qǐng)書
- 2023-2024小學(xué)六年級(jí)上冊(cè)英語期末考試試卷質(zhì)量分析合集
- 第六章幾何圖形 初步數(shù)學(xué)活動(dòng) 制作紙魔方和繪制五角星說課稿2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)
- 武漢市2024-2025學(xué)年度高三元月調(diào)考?xì)v史試題卷(含答案)
- 2025年金城出版社有限公司招聘筆試參考題庫含答案解析
- 醫(yī)院保安管理服務(wù)項(xiàng)目實(shí)施方案
- 《工程建設(shè)質(zhì)量信得過班組建設(shè)活動(dòng)準(zhǔn)則》
- 2025-2025學(xué)年度第二學(xué)期七年級(jí)組工作計(jì)劃
- 妊娠期糖尿病指南2024
- 讀書心得《好老師征服后進(jìn)生的14堂課》讀后感
- 公路工程施工安全應(yīng)急預(yù)案(4篇)
- 新能源汽車充電設(shè)施安全檢查記錄表
評(píng)論
0/150
提交評(píng)論