




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章數(shù)據(jù)組選與排序問題的解題思數(shù)組的定典型的數(shù)組操2成千上萬只羊,不可能用一般變量來記3 a[10];
數(shù)組名[常量表達(dá)式]14930a[0]a[1]a[2]a[3]a[4]a[5]a[6]
a[7] a[8]a[9]下標(biāo)是i-14 a[0]=a[5]+a[7]-a[2*a[i]=a[i]+a[a[05intintia[100];//不要寫成intfor(i=0;i<=99;012012 9798for(i=99;i>=0;i--)cout<<a[i];99989998 21}6intint{intsize=50;inta[size]; constintsize=int{inta[size]; 114930
1.int2.a[-2]=3.a[200]=4.a[10]=5.intm= 一維數(shù)組的定義▲a[-2]就代表位于地址a2)*size(int)a-8a[-25,就是往地址a–8處寫入數(shù)值5這種情況,程序執(zhí)行到語句2就會立即出錯。a[-2]=5是不 的數(shù)組元素并不在數(shù)組 intintint比使用的元 一 [例21234100 6 sum=sum+i sum[i]sum[i1i;(保留中間結(jié)果的情況)intsum[101sum[0]=0;(注意數(shù)組邊界)for(i=1;i<=100i++)sum[i]=sum[i-1]+[例31234567891
只需循環(huán)到一半,kn/2;for(i=0,j=n-1;i<=k;i++,j--{t=a[i];a[i]=a[j];a[j]=}int{inta[]={0,1,2,3,4,5,6,7,8,9,10,11,inti,j,//數(shù)組總長度除以整數(shù)的長度是元素的個intn=sizeof(a)/ij標(biāo)沒有交叉則繼續(xù)交換,節(jié)省計算for(i=0,j=n-1;i<j;i++,j--{t=a[i];a[i]=a[j];a[j]=}for(i=0;i<n;cout<<setw(3)<<return}Fibonacci1123581321f[01f[1循環(huán)體:f[i]f[i2f[i循環(huán)控制(forinti2i20int{intf[20]={1,for(inti=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(inti=0;i<20;{if(i%5==coutendlcout<<setw(12)<<}return} 程序框bigsheep for(i=0;i<10;i=i+1i鍵入第i只羊的重量sheep[i]bigsheep< bigsheep=bigsheepNo= int{ bigsheep=0.0;int for(i =0; <10;{
//數(shù)//浮點類型變量,存放最肥羊的重//用于記錄最肥羊的編// 循環(huán),開cout<“請輸入第 +1<“只羊的重量”;cin>sheep[i];if (sheep[i]>{
//輸入第i羊的重//浮點數(shù)判斷大小可直接用關(guān)系符bigsheep=sheep[i];bigsheepNo=i;}
//讓第i羊為當(dāng)前最肥//記錄第i羊的編 //循環(huán)結(jié)
“最肥的羊的重量是:”bigsheependl;//輸出重量bighpo;//輸出編號retuern0; 101203994124333519(找4的位置i=0;while(i<&&a[i]!=num&&i<int{inta[10],for(inti=0;i<10;i++)cin>>a[i];cout“輸入被查找的數(shù)endl;cin>>num;i=while(a[i]!=num&&i<10)if(i<=couticout
whilewhile(i<{if(a[i]==num)}}如果找到了,i就是插入的位置,如果沒找到,ii=0;num=如果找到了,i就是插入的位置,如果沒找到,i{
35798if(num<=a[i])}1234561111234567for( =0; =
a[ +1]=a[i]for(i=6;i>=0;i--)a[i+1]=123456712345671234534567for(i=n-1;1234534567d f’ for(i=s;i<=f;a[i-d]=98542085942085429085420685420
333337
第次 a[0]和a[1]比 a[1]和a[2]比第j第j次 a[j]和a[j+1]比for(j =0;j <n-1;j++)if (a[j] >a[j +1]) =a[j]a[j] =a[j +1];a[j +1]=temp;}n-1次)for( =0; <n–1-
;j++)i (a[j >a[ +1])
i<n1和i<=n =a[j]a[j]=a[j +1];a[j1]=temp;}將一個最大的放到最
j<n–1-intmain(){inta[10]={9,8,5,4,2,0,6,1,3,inti,j,temp,n=for(i0;in1i++)//n個元素,只要冒n-1for(j=0;j<n–1-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i<9;i++)cout<<a[i]<<“”;return0;}p=1;for(j =1+1;j <p=1;for(j =1+1;j <10;j++)if (a[p][j])p=j=a[p];a[p]=a[1];a[1]=temp;790564238p790564238p970564238p970564238p980564237p
p=ifor(j =i +1;j <n;j++)if (a[p]<a[j])p=j; =a[p];a[p]=a[i];a[i =int{inta[10]={3,7,0,9,8,5,4,2,6,inti,j,temp,n=10,for(i=0;i<n-1;{p=for(j=i+1;j<n;j++)if(a[p]<a[j])p=temp=a[p];a[p]=a[i];a[i]=}for(i=0;i<10;cout<<a[i];return0;} int{inta[21],p,cout20個整數(shù)endl;for(inti=0;i<20;i++)cin>>for(inti=0;i<19;for(intj=0;j<19-i;j++)if(a[j]>a[j+1])
{intt=a[j];a[j]=a[j+1];a[j+1]=t;cout<<“輸入 入的數(shù)”<<cin>>num;p=0;whilea[p]num&&p20)p++;//查找for(intk=19;k>=p;k--a[k+1]=a[p]=
for(inti=0;i<21;cout<<setw(4)<<a[i];return0;}
3、如果用if語句,需要判斷50次?if(n==1)count[1]++;if(n==2)for(i=1;i<=1000;{cin>>num;{case1:case2:count[2]++;break;case3:count[3]++;break;….
for(i=1;i<=1000;{cin>>for(j=1;j<=50;if(num==j) m=1cnt[1]++m=2cnt[2]++m=50
int{intcnt[510intfor(inti=0;i<1000;{cin>>}for(inti=1;i<=50;cout<<setw(4)<<cnt[i];cout<<endl;return} 定義數(shù)組思路組,計數(shù)為1 0
34567
9
111213
15 當(dāng)m<a[k]
當(dāng)m>a[k] a[k]=b>e注意注意:k是全局的下標(biāo)值,(e b)/2+ba[k]!=a[k]!=m&b=k=b+(e-b)/b=k+e=k-nya[k]>int
intk,num,b=0,e=inta[15]={1,3,5,7,9,11,13,15,17,19,21,23,25,27,cin>>num;k=(e-b)/2;while(num!=a[k]&&b<=e){if(a[k]>num) {e=k-1;} {b=k+1;}k=b+(e–b)/2;}if(num==a[k]) cout<<"pos=“<<k+1<<endl;cout<<"notfound“<<endl;return0;}for(inti=0;i<m;for(intj=0;j<n;if(x[i]+y[j]==cout<<i<<““<<j<<先將數(shù)組xcm*log2m,c是一個常數(shù)for(inti=0;i<n;i++)//取y中每個元素for(b=0,e<m;b<= intmiddle=b+(e-b)/if(x[middle]+y[i]==
//只要條件滿足 cout<<middle<<“”<<i<<endl;i=5;break;if((x[middle]+y[i])>讓i5終止了外城循環(huán)i=5;要在break之前e=middle讓i5終止了外城循環(huán)i=5;要在break之前b=middle+總共執(zhí)行了(cm+n)log2m,dangm,n足夠大時,效率高于f[5]={1,3,5,7,9},g[5]={2,3,4,7, 1357921357923478inti=j=0,cnt=0;while(i<5&&j<5)if(f[i]<={j++;cnt+=5–i;cout<<cnt<<
計算方T(n)的同數(shù)量級有以下:1,log2n,n,nlog2nn3,2n,n!找出后,f(n數(shù)量T(n)/f(n極限可得到一常數(shù)c,則時間復(fù)雜度T(n)=O(f(n))for(i=1;i<=n;++i)for(j=1;j<=n;++j) c[i][j] n2for(k=1;k<=n;c[i][ja[i][k*b[k][j]//該步驟屬于基本操作行次數(shù)}T(nn2n3,根據(jù)上面括號里的同數(shù)量級,我們可以確定n3為T(n)的同數(shù)量級。f(n)n3T(n)/f(n)則該算法的時間復(fù)雜度:T(nO(n^3)n^3即是n的3程序執(zhí)行時除了需要空間和本身所使用的指令、常單元和一些為現(xiàn)實計算所需信息的輔助空間。兩部分:。41232
例子輸2.00000 0 34 67001220012230000235532000200110000000000 例如:doublea[0][0]...a[1][0]...a[2][0]...
doublea[3][4doublea[0]--a[0][0]a[0][1]a[0][2]aa[1]--a[1][0]a[1][1]a[1][2]a[2]--a[2][0]a[2][1]a[2][2]二維數(shù)組的定 如:doublea[2][3][4234共有24 doublea[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[2][0]a[2][1]a[2][2]a[3][0]a[3][1]a[3][2]doublea[100][100][100]有1,000,000int面,行,列
a[0][1][0]
1100500900int int110000011intintinta[][4]={1,2,3,4,5,6,7,8,9,10,11,inta[3][4]={{0,0,3},{},{0,intfor(i=0;i<3;i++)for(j=0;j<4;j++)a[i][j]=i*4+(j+1)for(i=0;i<12;i++)a[i/4][i%4]=i+1;a 1245
b for(i=0;i<3;i++)for(j=0;j<2;for(i=0;i<3;i++)for(j=0;j<2;j++)b[i][j]=a[b[j][i]=2x=a[0]0]fori =0 to2for = to a[i][j > column=j;row=i;x=a[i][j];輸出maxint{inta[3][4],i,j,row,column,max;max=a[0][0];for(i0i3i++//遍歷數(shù)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;column=cout<<“最大元素是”<<max<<“位于row1column<<“列”<<}return}— 160023004000750024002400750063007200590059006000300029003100270027003500 fori0i3i+{for(j0j7j+dis[i]=dis[i]+a[i][j];cost[i]=dis[i]*price[i];}int{intdis[3]={0,0,doubleprice[3]={20,inta[3][7]={inttotal=0,i,for(i=0;i<3;{for(j=0;j<7;j++)dis[i]=dis[i]+a[i][j];total=total+dis[i]*}cout“totalendl;return0;}C++通常把字符數(shù)組當(dāng)char0charc1[5]={‘c’‘h’‘a(chǎn)’‘r’‘\0’};charc2[4]={‘c’‘h’‘a(chǎn)’‘r’字符數(shù)組,不是字符charc[]={“char”};直接用字符串形式賦值,是字符以字符串形式給數(shù)組賦值時,末尾自動系統(tǒng)對字符數(shù)組操作動判斷 charstr1“”},str2[20];str2str1;(在語法上是錯誤的)charc1=‘A’;c2=a[0]=‘C’;a[1]=‘h’,a[2]=‘i’;a[3]=‘n’;a[4]=charhowarehow cin.getline(數(shù)組名size代表要輸入的字符串的最大長度,包括sizsizsiz例:charstr[15最多14個字符,最后一個是輸入為Howareyou?則全部保存到str中輸入為howareyou,dai?,則howareyou,da保存起100200Thisis astring.\ncin>>100200Thisis astring.\n量。str中保存地方是“Thisis astring.\0”如果緩沖區(qū)中只有一個‘\ncin.getline此時的str是一個空串,只有一個結(jié)束符abcdecin>>str1>> str[30]=“thisisainterestingcout<<str<<endl;cout<<str[5]<<endl;cout<<str+5<<endl;interesting
//輸出“isainteresting第一,需要知道起始位置p,第二,需要知道長度for(inti=0;i<count; cout<<#include<iostream>#include<cstring>usingnamespacestd;intmain(){charstr1[20],str2[20];cin.getline(str1,20);strcpy(str2,str1);coutstr1endlcout<<str2<<endl;return0; 字符數(shù)組舉Thisisabook.for(i=0;Thisisabook.{處理;}if(str[i]==‘Z’)ifif(str[i]==‘
int{charstr[20]; cin.getline(str,20); for(inti=0;str[i]!='\0';i++){if str[i]='A';if str[i]='a';if(str[i]=='')}coutstrendl//輸出字符串,只需寫名字return0;}面。(注:不使用系統(tǒng)函數(shù)strcat)charstr1[41],str2[41];為拼接留出富余空間for(len1=0;str1[len1]!=‘\0’;len1++);for(len2=0;str2[len2]!=‘\0’;for(len2=0;str2[len2]!=‘\0’;len2++)str1[len1++]=str2[len2];int{intlen1,len2;charstr1[41],str2[41];//20+20+\0cin.getline(str1,21);cin.getline(str2,21);for(len1=0;str1[len1]!='\0';len1++);for(len2=0;str2[len2]!='\0';len2++);if(len1>=len2){for(len2=0;str2[len2]!=‘\0’,len2++;)str1[len1++]=str2[len2];str1[len1]=}{for(len1=0;str2[len1]!=‘\0’;len1++)str2[len2++]=str1[len1];str2[len2]=}cout<<str1<<endl;cout<<str2<<return flag=0,輸入字符串該字符!=‘\0' c= '? flag=
flag=flag=1int{charinti,num=0,flag=0;cin.getline(str,80);for(i=0;str[i]!=’\0’;if(str[i]==‘’)flag=0;if(flag=={flag=1;
flag=0,m=該字符!='\0'flag= c=flag=yflag=flag=1輸出cout“字符串中有”num“個單詞<<endl;return0;字符串操charstr1[20]=“ ”str2[20];strcpy(str2,str1);字符串intlen1=strlen(str1);求長度(不包含\0)strinstinginude<sring>定義一個字符串的對stringmystr;//可以不指定長度char可以在定義時初始stringmystr=“ o”;類比charmystr[100]=“ stringmystr(80,‘類比charmystr[80];memset(mystr,’’,80); stringcin int stringname,school,F ="C++,ofcourse";cout<<"pleaseenteryourname:"<<endl;getline(cin,name);cout<<"pleaseenteryourschool"<<endl;getline(cin,school);cout<<"\nName:"<<<<"\nSchool:"<<<<"\nFavoritelanguage:"<< <<returnstringmystr1=intlen1=charmystr[]=intlen2=strlen(mystr)
chars1[100],s2[100];strings1,
if(strcmp(s1,cout<<“s1islargerthangetline(cin,getline(cin,
if(s1>cout<<“s1islargerthan =,assign inserterase() at>>,getline()//從 copy()c_strC_stringbeginendSTLrbeginrendstring用strings;constchar*c="OutThere";s.assign(c);stringconstchar*c="OutThere";s.assign(c,3);
//s=”O(jiān)ut//strings1( o"),s2("Wide"),s3("World"s1.assign(s2);s1=s3;
////strings1(" o"),s2("WideWorld");s1.append(s2,5,5
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基因工程基礎(chǔ)
- 盾構(gòu)機(jī)吊裝吊拆安全協(xié)議出井模板
- 領(lǐng)導(dǎo)力培訓(xùn)提升企業(yè)核心競爭力
- 音樂與光影文化節(jié)的視聽盛宴設(shè)計
- 項目管理方法與實施策略培訓(xùn)
- 非物質(zhì)文化遺產(chǎn)在旅游業(yè)中的價值挖掘
- 顧客服務(wù)與無縫購物流程的深度融合
- 項目管理中的時間與資源分配策略
- 防空防災(zāi)知識的普及與教育
- 零售業(yè)中增強(qiáng)現(xiàn)實AR的顧客體驗優(yōu)化策略
- 2024年中國家用水處理機(jī)市場調(diào)查研究報告
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年版《輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊》
- 拆除鐵皮棚協(xié)議書
- 山東省煙臺市2024年中考英語真題【附真題答案】
- JGJ104-2011建筑工程冬期施工規(guī)程
- 陜西省安康市石泉縣2023-2024學(xué)年八年級下學(xué)期期末考試物理試題
- 2024北京海淀區(qū)初一(下)期末道法試題及答案
- 業(yè)主大會(業(yè)主委員會)規(guī)范化建設(shè)指導(dǎo)手冊
- 2024年上海市初中學(xué)業(yè)水平考試物理中考試卷真題(含答案詳解)
- (高清版)JTST 272-2-2023 內(nèi)河航運工程造價指標(biāo)
評論
0/150
提交評論