版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2019年計(jì)算機(jī)二級(jí)考試java章節(jié)輔導(dǎo):數(shù)組元素間的比較5.1.6數(shù)組元素間的比較了解了數(shù)組元素的訪問(wèn)后,我們能夠利用數(shù)組元素的遍歷實(shí)現(xiàn)很多功能。1.?dāng)?shù)組值、最小值和平均值利用for循環(huán)遍歷數(shù)組的所有元素能夠非常方便的求出數(shù)組的值、最小值和平均值。[例5-5]]求出一個(gè)數(shù)組的值、最小值、平均值importjava.util.Scanner;classArray{//計(jì)算數(shù)組元素值publicintgetMax(int[]a){intmax=a[0];for(inti=0;i if(maxmax=a[i];}}returnmax;}//計(jì)算數(shù)組元素最小值publicintgetMin(int[]a){intmin=a[0];for(inti=0;i if(min>a[i]){min=a[i];}}returnmin;}//數(shù)組元素求和publicintgetSum(int[]a){intsum=0;for(inti=0;i sum+=a[i];}returnsum;}//計(jì)算數(shù)組元素平均值,調(diào)用getSum方法publicdoublegetAverage(int[]a){doubleavg;〃因?yàn)間etSum(a)和a.length都是int類型,有了(*1.0)后能夠使兩個(gè)int類型的值按 double計(jì)算avg=getSum(a)*1.0/a.length;returnavg;
}publicclassTest5_5{publicstaticvoidmain(Stringargs[]){//Sanner類是一個(gè)輸入類,用于整數(shù)、實(shí)數(shù)、字符串等的輸入Scannerscan=newScanner(System.in);int[]a=newint[10];//初始化數(shù)組 aSystem.out.println("請(qǐng)連續(xù)輸入 10個(gè)整數(shù)");//利用Scanner的nextInt方法從鍵盤輸入10個(gè)數(shù)//使用a.length的方式,避免數(shù)組下標(biāo)越界異常的發(fā)生for(inti=0;i System.out.print("第"+(i+1)+"個(gè)整數(shù):");a[i]=scan.nextInt();}ArraymyArray=newArray();System.out.println("System.out.println("System.out.println("數(shù)組的值為:"+myArray.getMax(a));System.out.println("System.out.println("System.out.println("數(shù)組的最小值為:"+myArray.getMin(a));數(shù)組的和為:"+myArray.getSum(a));數(shù)組的平均值為:System.out.println(""+myArray.getAverage(a));數(shù)組的平均值為:這里我們將對(duì)數(shù)組元素所做操作集中在一個(gè)類 Array中實(shí)現(xiàn),在需要使用這些方法的時(shí)候只要生成類 Array的類對(duì)象,通過(guò)該類對(duì)象就能夠調(diào)用這些方法了。而不是將這些方法放到主類中實(shí)現(xiàn),直接通過(guò)主類的main方法調(diào)用。這是一種良好的編程習(xí)慣,便于代碼復(fù)用,應(yīng)予以提倡。程序中使用到了Scanner類,下面予以介紹。Scannerscan=newScanner(System.in);定義一個(gè)Scanner類的類對(duì)象,在定義過(guò)程中,Scanner有多個(gè)構(gòu)造方法,這里我們使用的是其中一個(gè),傳遞的參數(shù) System.in是標(biāo)準(zhǔn)輸入,即從鍵盤輸入。scan.nextInt()表示從鍵盤上讀入一個(gè)整數(shù),除此之外,Scanner還支持doble,float等數(shù)據(jù)類型數(shù)據(jù)的讀入,分別對(duì)應(yīng)方法 nextDouble(),nextFloat()。表5-1Scanner類的常用方法利用表5-1中的方法能夠?qū)崿F(xiàn)多種數(shù)據(jù)類型數(shù)組的讀取,特別注意,方法next的返回值是 String類型。2.?dāng)?shù)組的排序數(shù)組中集中了多個(gè)數(shù)據(jù)類型相同的元素,為了更好的對(duì)數(shù)組元素操作,有時(shí)候?qū)?shù)組排序是比不可少的,所以,下面我們討論如何對(duì)數(shù)組排序。排序算法在數(shù)據(jù)結(jié)構(gòu)中有多個(gè),這里算法不是我們講解的重點(diǎn),我們選擇其中一種:冒泡排序(排序后元素值遞增)實(shí)行講解。冒泡排序的關(guān)鍵點(diǎn)是從后向前對(duì)相鄰的兩個(gè)數(shù)組元素實(shí)行比較,若后面元素的值小于前面元素的值,則讓兩元素交換值;否則,不實(shí)行交換。依次遍歷所有元素,這樣,第一趟排序后數(shù)組中的最小值就是下標(biāo)為0的元素了,依次類推,我們實(shí)行第二趟排序(這時(shí)候我們無(wú)需遍歷所有元素,因?yàn)閿?shù)組下標(biāo)為0的元素,其值已經(jīng)是最小,我們只需遍歷從除下標(biāo)為0的所有元素),經(jīng)過(guò)第二趟后,下標(biāo)為1的數(shù)組元素存儲(chǔ)的是數(shù)組中次小的值,這樣對(duì)于有n個(gè)元素的數(shù)組,循環(huán)執(zhí)行n-1趟后便可完成排序。當(dāng)然,也能夠從前向后對(duì)兩個(gè)數(shù)組元素實(shí)行排序,但此時(shí)是較大者的值向后移。[例5-6]importjava.util.Scanner;classSortClass{//對(duì)數(shù)組排序,arr:數(shù)組名publicvoidsort(int[]arr){inttemp;//交換值時(shí)作為臨時(shí)變量for(inti=0;i for(intk=arr.length-1;k>i;k--){if(arr[k]>arr[k-1]){//后者小于前者,需要交換兩者的值temp=arr[k];arr[k]=arr[k-1];arr[k-1]=temp;}}paint(i+1,arr);//調(diào)用數(shù)組打印方法}}//打印數(shù)組元素,用于排序時(shí)檢測(cè)每趟的排序結(jié)果//time:第幾趟,arr:數(shù)組名publicvoidpaint(inttime,int[]arr){System.out.print("\n第"+time+"趟排序:");for(inti=0;i System.out.print(arr[i]+"\t");}}}publicclassTest5_6{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intn=5;//數(shù)組元素個(gè)數(shù)int[]arr=newint[n];System.out.println("請(qǐng)從鍵盤上輸入 "+n+"個(gè)數(shù):");//利用Scanner的nextInt方法從鍵盤輸入10個(gè)數(shù)for(inti=0;i System.out.print("第"+(i+1)+"個(gè)整數(shù):");arr[i]=scan.nextInt();}System.out.println("排序前數(shù)組元素值:");for(inti=0;i System.out.print(arr[i]+"\t");}SortClasssc=newSortClass();//生成SortClass的類對(duì)象,用以調(diào)用sort方法sc.sort(arr);//調(diào)用SortClass的sort方法System.out.println("\n排序后數(shù)組元素值:");//字符串中的"\n"是換行操作for(inti=0;i System.out.print(arr[i]+"\t");}}}運(yùn)行結(jié)果如下:請(qǐng)從鍵盤上輸入5個(gè)數(shù):TOC\o"1-5"\h\z第1個(gè)整數(shù): 52第2個(gè)整數(shù): 45第3個(gè)整數(shù): 68第4個(gè)整數(shù): 96第5個(gè)整數(shù): 32排序前數(shù)組元素值:5245689632第1趟排序: 96 52 45 68 32第2趟排序: 96 68 52 45 32第3趟排序: 96 68 52 45 32第4趟排序: 96 68 52 45 32排序后數(shù)組元素值:9668524532從結(jié)果中能夠看出,經(jīng)過(guò) sort方法處理后,數(shù)組元素按升序?qū)嵭信帕辛?,那么,是否能夠讓?shù)組元素按從大到小順序排序的,其實(shí),只要改變判斷條件“if(arr[k]>arr[k-1])”中的“>”為“ 3.?dāng)?shù)組特定數(shù)據(jù)的查找從數(shù)組中查找從數(shù)組中查找特定數(shù)據(jù)的最簡(jiǎn)單的辦法是遍歷數(shù)組中的所有元素,這種插好方法也稱為線性查找。以下方法 indexOf()用于查找arr數(shù)組中屈指為value的元素的索引位置,若找不到,返回-1。該方法采用的就是線性查找方式。publicintindexOf(int[]arr,intvalue){for(inti=0;i if(arr[i]==value)returni;//找到,返回對(duì)應(yīng)下標(biāo)}//for循環(huán)執(zhí)行完后,表示未找到,則返回-1return-1;}線性查找的時(shí)間復(fù)雜度為O(n),它適用于小型數(shù)組或未排序的數(shù)組。對(duì)于大型數(shù)組,線性查找的效率比較低。如果數(shù)組已經(jīng)排好序,那么我們能夠采用高效的二叉查找算法。二叉查找算法的中心思想史:查找數(shù)組中位于中間位置的元素,并將其與查找值實(shí)行比較,如果兩者相等,就返回該數(shù)組元素的下標(biāo)值;否則,將問(wèn)題簡(jiǎn)化為查找已排序數(shù)組的一半元素——如果查找值小于數(shù)組的中間元素,就查找數(shù)組的前半部分,否則就查找數(shù)組的后半部分(假設(shè)數(shù)組按升序排序)。二叉查找的時(shí)間復(fù)雜度是O(log2n)。例5-7給出了使用二叉查找算法的數(shù)組元素查找方法。[例5-7]classArraySearch{//使用二叉查找算法查找數(shù)組 arr中值為value的數(shù)組元素下標(biāo),找不到返回-1publicintindexOf(int[]arr,intvalue){intlow=0;inthigh=arr.length-1;intmiddle;while(lowmiddle=(low+high)/2;if(arr[middle]==value){returnmiddle;}elseif(arr[middle]low=middle+1;}else{high=middle-1;}}return-1;}}publicclassTest5_7{publicstaticvoidmain(Str
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 澳洲初中數(shù)學(xué)試卷
- 二零二四年度嬰幼兒奶粉生產(chǎn)設(shè)備租賃合同6篇
- 2024食堂用工人員勞動(dòng)爭(zhēng)議預(yù)防與處理合同3篇
- 厭氧消化處理系統(tǒng)研究-深度研究
- 二零二五年度CFG樁基工程施工臨時(shí)設(shè)施租賃合同3篇
- 二零二四年度智能家居銷售合同封面設(shè)計(jì)專業(yè)版3篇
- 2025年度打印機(jī)維修保養(yǎng)及節(jié)能降耗服務(wù)合同4篇
- 個(gè)人美容院加盟連鎖合同(2024年度)2篇
- 多模態(tài)互動(dòng)技術(shù)的集成-深度研究
- 2024-2030年中國(guó)連續(xù)性腎臟替代治療(CRRT)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 跨學(xué)科主題學(xué)習(xí):實(shí)施策略、設(shè)計(jì)要素與評(píng)價(jià)方式(附案例)
- 場(chǎng)地委托授權(quán)
- 2024年四川省成都市龍泉驛區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 項(xiàng)目工地春節(jié)放假安排及安全措施
- 印染廠安全培訓(xùn)課件
- 紅色主題研學(xué)課程設(shè)計(jì)
- 胸外科手術(shù)圍手術(shù)期處理
- 裝置自動(dòng)控制的先進(jìn)性說(shuō)明
- 《企業(yè)管理課件:團(tuán)隊(duì)管理知識(shí)點(diǎn)詳解PPT》
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)二 軟文的寫作
評(píng)論
0/150
提交評(píng)論