實驗1查找與排序_第1頁
實驗1查找與排序_第2頁
實驗1查找與排序_第3頁
實驗1查找與排序_第4頁
實驗1查找與排序_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗1 查找與排序一、實驗?zāi)康模?)掌握查找的問題描述,實現(xiàn)線性查找算法及二分查找算法;(2)熟悉排序的問題描述,實現(xiàn)插入排序算法。二、實驗內(nèi)容1、 線性查找算法#include <stdio.h> void main() int a101; /定義數(shù)組a,設(shè)置其長度為101int i,n,num; printf("*n"); printf(" 順 序 查 找 算 法n"); printf("*nn"); printf("您要在多少個數(shù)中進(jìn)行線性查找,請輸入(1100):"); _; /輸入一個數(shù)值賦給

2、變量n,表示數(shù)列長度printf("n"); while(_) /如果輸入的數(shù)據(jù)列表長度不在1,100之間 _ printf("您要在多少個數(shù)中進(jìn)行線性查找,請輸入(1100):"); _ printf("請您輸入第1個整數(shù)a1:"); scanf("%d",&a1); i=2; while(_) printf(_); _ _ printf("n輸出數(shù)據(jù)列表:n"); for(_) printf("%6d",ai); printf("nn"); d

3、oprintf("請輸入要查找的數(shù):"); _; /輸入一個整數(shù)賦給變量num,表示要查找的對象i=1; while(_) /在數(shù)據(jù)列表內(nèi)搜索num i+; if(_) printf("該表中沒有您要查找的數(shù)據(jù)!n"); else printf(_); while (_); /若輸入的待查找的數(shù)不是999,則可持續(xù)搜索。2、 二分查找算法#include <stdio.h> void main() int a101; int i,n,num; int Top,Bottom,Mid;int flag=1; /如果在列表中找到數(shù)字,則值為1,否則

4、為0 int loc=-1;/要查找的數(shù)在列表中的位置,如果loca=-1表示列表中沒有這個數(shù);如果有這個數(shù),則它的值為所在的位置 printf("*n"); printf(" 折 半 查 找 算 法n"); printf("*nn"); printf("您要在多少個數(shù)中進(jìn)行折半查找,請輸入(1100):"); _; /輸入一個數(shù)值賦給變量n,表示數(shù)列長度printf("n"); while(_) /如果輸入的數(shù)據(jù)列表長度不在1,100之間 _ printf("您要在多少個數(shù)中進(jìn)行折半

5、查找,請輸入(1100):"); _ printf("請您輸入第1個整數(shù)a1:"); scanf("%d",&a1); i=2; while(_) /輸入從小到大的表列 printf(_); _ if(_) i+; else printf("您輸入的數(shù)不滿足升序要求,請重新輸入!n"); printf("n輸出數(shù)據(jù)列表:n"); for(_) printf("%6d",ai); printf("nn"); doprintf("請輸入要查找的數(shù):&q

6、uot;); _; /輸入一個整數(shù)賦給變量num,表示要查找的對象flag=1; /假設(shè)輸入的數(shù)在列表中 _ /給Top賦初始值_ /給Bottom賦初始值_ /首次計算Mid的值while(flag) printf("Bottom=%2d, Top=%2d, Mid=%2d, a%2d=%2dn",_); if( (_) ) /輸入的數(shù) num>aTop 或者 num<aBottom,肯定num不在這個列表中 loc=-1; flag=0; else if(_) /如果找到數(shù)num loc=Mid; printf("找到數(shù) %d 的位置%2dnn&q

7、uot;,_); break; else if(_) /若 aMid>num,則num一定在 aBottom和aMid-1范圍之內(nèi) _ _ else if(_) /若 aMid<num,則num一定在 aMid+1和aTop范圍之內(nèi) _ _ if(loc=-1) printf("%d 這個數(shù)在列表中沒有找到。nn",num); while (_); /若輸入的待查找的數(shù)不是999,則可持續(xù)搜索。 3、 插入排序算法#include<stdio.h>void main()int a101;int i,j,k,m,n;printf("*n&qu

8、ot;); printf(" 插 入 排 序 算 法n"); printf("*nn"); printf("請輸入數(shù)據(jù)列表長度:n");_; /輸入一個數(shù)值賦給變量n,表示數(shù)列長度printf("n請輸入%d個數(shù)字:n",n);for(i=0; _)_for(i=1; _;i+)k=ai; /用k保存待插入的數(shù)據(jù),以騰出ai的位置j=i-1; /j指向當(dāng)前空位置的前一個位置while(_)&&(_) /搜索插入位置并騰出空位_;j-;_; /插入數(shù)據(jù)printf("n第%d次插入排序后全部

9、數(shù)據(jù)為:n",i);for(m=0;m<n;m+)printf("%d ",am);printf("nn按照插入排序法,你輸入的數(shù)據(jù)由小到大排序為:n");for(i=0;i<n;i+)printf("%d ",ai);printf("n");4、 冒泡排序算法#include<stdio.h>void main()int a101;int i,j,k,m,n;int exchanged;printf("*n"); printf(" 冒 泡 排 序 算

10、 法n"); printf("*nn"); printf("請輸入數(shù)據(jù)列表長度:n");_; /輸入一個數(shù)值賦給變量n,表示數(shù)列長度printf("n請輸入%d個數(shù)字:n",n);for(i=0; _)_i=0;doexchanged=0; / exchanged為是否交換的標(biāo)志,0表示未發(fā)生交換for(j=0; _;j+) / 控制一趟中從左往右依次比較的數(shù)據(jù)if(aj>aj+1) / 如果前個數(shù)據(jù)比后個數(shù)據(jù)大k=aj;_ / 交換aj和aj+1_ / 為exchanged做已交換標(biāo)記if (i=0) printf("n");printf("第%d趟冒泡排序法由小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論