Java語言程序設(shè)計(jì)基礎(chǔ)篇中文第六章演示文稿_第1頁
Java語言程序設(shè)計(jì)基礎(chǔ)篇中文第六章演示文稿_第2頁
Java語言程序設(shè)計(jì)基礎(chǔ)篇中文第六章演示文稿_第3頁
Java語言程序設(shè)計(jì)基礎(chǔ)篇中文第六章演示文稿_第4頁
Java語言程序設(shè)計(jì)基礎(chǔ)篇中文第六章演示文稿_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java語言程序設(shè)計(jì)基礎(chǔ)篇中文ppt第六章演示文稿1現(xiàn)在是1頁\一共有103頁\編輯于星期一優(yōu)選Java語言程序設(shè)計(jì)基礎(chǔ)篇中文ppt第六章2現(xiàn)在是2頁\一共有103頁\編輯于星期一開放問題讀取一百數(shù)字,計(jì)算它們的平均值,然后找出有多少個數(shù)大于平均值。3現(xiàn)在是3頁\一共有103頁\編輯于星期一解決方案AnalyzeNumbersRunwithpreparedinput4現(xiàn)在是4頁\一共有103頁\編輯于星期一學(xué)習(xí)目標(biāo)描述數(shù)組在程序設(shè)計(jì)中的必要性(第6.1節(jié))。聲明數(shù)組引用變量、創(chuàng)建數(shù)組(第6.2.1-6.2.2節(jié))。初始化數(shù)組中的值(第6.2.3節(jié))。使用下標(biāo)變量訪問數(shù)組元素(第6.2.4節(jié))。利用一條數(shù)組初始化語法聲明、創(chuàng)建和初始化數(shù)組(第6.2.5節(jié))。編寫程序?qū)崿F(xiàn)常用的數(shù)組操作(顯示數(shù)組、對所有元素求和、求最大和最小元素、隨意打亂、移動元素)(第6.2.6節(jié))。使用for-each循環(huán)簡化程序設(shè)計(jì)(第6.2.7)。在LottoNumbers和DeckOfCards問題中應(yīng)用數(shù)組(第6.3-6.4節(jié))。將一個數(shù)組的內(nèi)容復(fù)制到另一個數(shù)組(第6.5節(jié))。開發(fā)和調(diào)用帶數(shù)組參數(shù)和返回值的方法(第6.6–6.7節(jié))。定義帶變長參數(shù)列表的方法(第6.8節(jié))。使用線性查找算法(第6.9.1節(jié))或二分查找算法(第6.9.2節(jié))查找數(shù)組的元素。使用選擇排序法對數(shù)組排序(第6.10.1節(jié))。使用插入排序算法使排序數(shù)組(第6.10.2節(jié))。使用Arrays

類中的方法(第6.11節(jié))。5現(xiàn)在是5頁\一共有103頁\編輯于星期一介紹數(shù)組數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它表示一組相同類型的數(shù)據(jù)。6現(xiàn)在是6頁\一共有103頁\編輯于星期一聲明數(shù)組變量datatype[]arrayRefVar; 舉例:

double[]myList;datatypearrayRefVar[];

//這種風(fēng)格是允許的,但不推薦使用

舉例:

doublemyList[];7現(xiàn)在是7頁\一共有103頁\編輯于星期一創(chuàng)建數(shù)組arrayRefVar=newdatatype[arraySize];舉例:myList=newdouble[10];myList[0]

引用數(shù)組中的第一個元素。myList[9]

引用數(shù)組中的最后一個元素。8現(xiàn)在是8頁\一共有103頁\編輯于星期一一步完成聲明和創(chuàng)建datatype[]arrayRefVar=newdatatype[arraySize];

double[]myList=newdouble[10];datatypearrayRefVar[]=new

datatype[arraySize];

doublemyList[]=newdouble[10];9現(xiàn)在是9頁\一共有103頁\編輯于星期一數(shù)組的大小一旦數(shù)組被創(chuàng)建就不能再修改它的大小。可以通過使用 arrayRefVar.length來求得數(shù)組的大小。舉例:myList.lengthreturns1010現(xiàn)在是10頁\一共有103頁\編輯于星期一默認(rèn)值當(dāng)數(shù)組被創(chuàng)建后,它的元素被賦予默認(rèn)值數(shù)值型基本數(shù)據(jù)類型的默認(rèn)值是0,

char

類型的默認(rèn)值為'\u0000'

,而

boolean

類型默認(rèn)值為false。11現(xiàn)在是11頁\一共有103頁\編輯于星期一下標(biāo)變量數(shù)組元素可以通過下標(biāo)來訪問。數(shù)組下標(biāo)是基于0的,就是說它從0開始到arrayRefVar.length-1結(jié)束。在圖6.1中的例子中,數(shù)組myList包含10個double值而下標(biāo)是從0到9。數(shù)組中的每個元素都可以使用下面一般被稱為下標(biāo)變量的語法表示:arrayRefVar[index];12現(xiàn)在是12頁\一共有103頁\編輯于星期一使用下標(biāo)變量創(chuàng)建數(shù)組后,可以采用和一般變量相同的方法使用下標(biāo)變量。例如:下面的代碼是將myList[0]和myList[1]的值相加賦給myList[2]。myList[2]=myList[0]+myList[1];13現(xiàn)在是13頁\一共有103頁\編輯于星期一數(shù)組初始化語法一步完成數(shù)組的聲明、創(chuàng)建、初始化: double[]myList={1.9,2.9,3.4,3.5};這種縮略語法必須用在一條語句中。14現(xiàn)在是14頁\一共有103頁\編輯于星期一使用縮略符號

聲明、創(chuàng)建、初始化數(shù)組double[]myList={1.9,2.9,3.4,3.5};這里的縮略符號相當(dāng)于以下面的語句:double[]myList=newdouble[4];myList[0]=1.9;myList[1]=2.9;myList[2]=3.4;myList[3]=3.5;15現(xiàn)在是15頁\一共有103頁\編輯于星期一注意使用縮略符號時,你必須將聲明、創(chuàng)建和初始化數(shù)組都放在一條語句中。將它們分開會引起語法錯誤。例如:下面的語句就是錯誤的:double[]myList;myList={1.9,2.9,3.4,3.5};

16現(xiàn)在是16頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}聲明數(shù)組變量value,創(chuàng)建一個數(shù)組并將它的引用賦值給values動畫17現(xiàn)在是17頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i變?yōu)?動畫18現(xiàn)在是18頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i(=1)小于5動畫19現(xiàn)在是19頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這一行被執(zhí)行后,values[1]是1動畫20現(xiàn)在是20頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i++后,i變?yōu)?動畫21現(xiàn)在是21頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i(=2)小于5動畫22現(xiàn)在是22頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這一行被執(zhí)行之后,values[2]為3(2+1)動畫23現(xiàn)在是23頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這之后,i就變?yōu)?.動畫24現(xiàn)在是24頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i(=3)依舊小于5動畫25現(xiàn)在是25頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這一行之后,values[3]變成6(3+3)動畫26現(xiàn)在是26頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這之后,i變成4動畫27現(xiàn)在是27頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i(=4)仍舊小于5動畫28現(xiàn)在是28頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這之后,values[4]變成10(4+6)動畫29現(xiàn)在是29頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}

i++后,i變成5動畫30現(xiàn)在是30頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}i(=5)<5為假。退出循環(huán)動畫31現(xiàn)在是31頁\一共有103頁\編輯于星期一跟蹤數(shù)組程序publicclassTest{publicstaticvoidmain(String[]args){int[]values=newint[5];for(inti=1;i<5;i++){values[i]=i+values[i-1];}values[0]=values[1]+values[4];}}這行之后,values[0]為11(1+10)動畫32現(xiàn)在是32頁\一共有103頁\編輯于星期一處理數(shù)組下面是一些示例:(使用輸入值初始化數(shù)組)(使用隨機(jī)數(shù)初始化數(shù)組)(打印數(shù)組)(對所有元素求和)(找出最大元素)(找出最大元素的最小下標(biāo)值)(隨意打亂)(移動元素)33現(xiàn)在是33頁\一共有103頁\編輯于星期一使用輸入值初始化數(shù)組java.util.Scannerinput=newjava.util.Scanner(System.in);System.out.print("Enter"+myList.length+"values:");for(inti=0;i<myList.length;i++)myList[i]=input.nextDouble();34現(xiàn)在是34頁\一共有103頁\編輯于星期一使用隨機(jī)數(shù)初始化數(shù)組for(inti=0;i<myList.length;i++){myList[i]=Math.random()*100;}35現(xiàn)在是35頁\一共有103頁\編輯于星期一打印數(shù)組for(inti=0;i<myList.length;i++){System.out.print(myList[i]+"");}36現(xiàn)在是36頁\一共有103頁\編輯于星期一對所有元素求和doubletotal=0;for(inti=0;i<myList.length;i++){total+=myList[i];}37現(xiàn)在是37頁\一共有103頁\編輯于星期一找出最大的元素doublemax=myList[0];for(inti=1;i<myList.length;i++){

if(myList[i]>max)max=myList[i];}38現(xiàn)在是38頁\一共有103頁\編輯于星期一隨意打亂39現(xiàn)在是39頁\一共有103頁\編輯于星期一移動元素40現(xiàn)在是40頁\一共有103頁\編輯于星期一增強(qiáng)型for循環(huán)(for-each循環(huán))JDK1.5引入了一個新的for循環(huán),它可以讓你不使用下標(biāo)變量就可以順序地遍歷整個數(shù)組。例如:下面的代碼顯示數(shù)組myList中的所有元素:

for(doublevalue:myList)System.out.println(value);

一般來講,這個語法是

for(elementTypevalue:arrayRefVar){//Processthevalue}

當(dāng)需要以其它順序遍歷該數(shù)組或改變數(shù)組中的元素時,你還是必須使用下標(biāo)變量。41現(xiàn)在是41頁\一共有103頁\編輯于星期一問題:樂透號碼假設(shè)你要玩選10樂透游戲,每張籌碼有10個范圍從1到99的獨(dú)特的數(shù)字。假設(shè)你買了一堆籌碼,希望它們涵蓋1到99的所有數(shù)字。編寫一個程序,從一個文件中讀取籌碼上的數(shù)字,并檢查是否涵蓋所有的數(shù)字。假設(shè)這個文件的最后一個數(shù)字是0。LottoNumbersRunLottoNumbersSampleData42現(xiàn)在是42頁\一共有103頁\編輯于星期一問題:一副牌編寫一個程序,它隨機(jī)地從一副52張牌中選擇4張。所有的牌可以使用一個名為deck的數(shù)組表示,這個數(shù)組用從0到51的初始值來填充,如下所示:int[]deck=newint[52];//Initializecardsfor(inti=0;i<deck.length;i++)deck[i]=i;DeckOfCardsRun43現(xiàn)在是43頁\一共有103頁\編輯于星期一問題:一副牌(續(xù))DeckOfCardsRunGUIDemo(pickingfourcards)44現(xiàn)在是44頁\一共有103頁\編輯于星期一問題:一副牌這個問題為今后構(gòu)建一個更有趣和更具現(xiàn)實(shí)意義的應(yīng)用程序打一個基礎(chǔ):參見練習(xí)題25.9。45現(xiàn)在是45頁\一共有103頁\編輯于星期一復(fù)制數(shù)組在程序中,你經(jīng)常需要復(fù)制一個數(shù)組或數(shù)組的一部分。在這種情況下,你可能會嘗試使用賦值語句(=),如下所示:

list2=list1;

46現(xiàn)在是46頁\一共有103頁\編輯于星期一復(fù)制數(shù)組使用循環(huán):int[]sourceArray={2,3,1,5,10};int[]targetArray=newint[sourceArray.length];for(inti=0;i<sourceArrays.length;i++)targetArray[i]=sourceArray[i];47現(xiàn)在是47頁\一共有103頁\編輯于星期一

arraycopy工具arraycopy(sourceArray,src_pos,targetArray,tar_pos,length);例如:System.arraycopy(sourceArray,0,targetArray,0,sourceArray.length);48現(xiàn)在是48頁\一共有103頁\編輯于星期一傳遞數(shù)組給方法publicstaticvoidprintArray(int[]array){for(inti=0;i<array.length;i++){System.out.print(array[i]+"");}}

Invokethemethodint[]list={3,1,2,6,4,2};printArray(list);InvokethemethodprintArray(newint[]{3,1,2,6,4,2});匿名數(shù)組49現(xiàn)在是49頁\一共有103頁\編輯于星期一匿名數(shù)組語句printArray(newint[]{3,1,2,6,4,2});使用下面的語法創(chuàng)建一個數(shù)組:newdataType[]{literal0,literal1,...,literalk};這里沒有數(shù)組的顯式引用變量。這樣的數(shù)組被稱為匿名數(shù)組。50現(xiàn)在是50頁\一共有103頁\編輯于星期一值傳遞Java使用值傳遞的方法傳遞實(shí)參給方法。傳遞基本數(shù)據(jù)類型變量的值與傳遞數(shù)組值會有很大不同。對于基本數(shù)據(jù)類型參數(shù),傳遞的是實(shí)參的值。在方法中改變局部參數(shù)的值并不影響方法之外變量的值。對于數(shù)組類型參數(shù),參數(shù)值是數(shù)組的引用,傳遞給方法的是這個引用。方法體中數(shù)組發(fā)生的改變,將會影響到作為參數(shù)傳給方法的原始數(shù)組。

51現(xiàn)在是51頁\一共有103頁\編輯于星期一publicclassTest{publicstaticvoidmain(String[]args){intx=1;//xrepresentsanintvalueint[]y=newint[10];//yrepresentsanarrayofintvalues

m(x,y);//Invokemwithargumentsxandy

System.out.println("xis"+x);System.out.println("y[0]is"+y[0]);}

publicstaticvoidm(intnumber,int[]numbers){number=1001;//Assignanewvaluetonumbernumbers[0]=5555;//Assignanewvaluetonumbers[0]}}簡單的例子52現(xiàn)在是52頁\一共有103頁\編輯于星期一調(diào)用棧當(dāng)調(diào)用m(x,y)時,x和y的值被傳遞給number

和numbers。因?yàn)閥包含的是數(shù)組的引用值,所以,numbers現(xiàn)在包含的是指向同一數(shù)組的相同引用值。53現(xiàn)在是53頁\一共有103頁\編輯于星期一調(diào)用棧當(dāng)調(diào)用m(x,y)時,x和y的值被傳遞給number

和numbers。因?yàn)閥包含的是數(shù)組的引用值,所以,numbers現(xiàn)在包含的是指向同一數(shù)組的相同引用值。54現(xiàn)在是54頁\一共有103頁\編輯于星期一堆

JVM將數(shù)組存儲在一個被稱作堆的內(nèi)存區(qū)域,堆是用來動態(tài)分配內(nèi)存的,在堆中的內(nèi)存塊可以按任意順序分配和釋放。55現(xiàn)在是55頁\一共有103頁\編輯于星期一傳遞數(shù)組參數(shù)目標(biāo):演示傳遞基本數(shù)據(jù)類型變量和傳遞數(shù)組變量的不同之處。TestPassArrayRun56現(xiàn)在是56頁\一共有103頁\編輯于星期一舉例(續(xù))57現(xiàn)在是57頁\一共有103頁\編輯于星期一從方法中返回?cái)?shù)組publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult58現(xiàn)在是58頁\一共有103頁\編輯于星期一跟蹤reverse方法publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1={1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000000聲明result并創(chuàng)建數(shù)組動畫59現(xiàn)在是59頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000000i=0而j=5動畫60現(xiàn)在是60頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000000i(=0)小于6動畫61現(xiàn)在是61頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000001i=0而j=5將list[0]賦值給result[5]動畫62現(xiàn)在是62頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000001這之后,i變?yōu)?而j變?yōu)?動畫63現(xiàn)在是63頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000001i(=1)小于6動畫64現(xiàn)在是64頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000021i=1而j=4將list[1]賦值給給result[4]動畫65現(xiàn)在是65頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000021這之后,i變成2而j變?yōu)?動畫66現(xiàn)在是66頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000021i(=2)依舊小于6動畫67現(xiàn)在是67頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000321i=2而j=3將list[i]賦值給result[j]動畫68現(xiàn)在是68頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000321這之后,i變成3而j變成2動畫69現(xiàn)在是69頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456000321i(=3)依舊小于6動畫70現(xiàn)在是70頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456004321i=3而j=2

將list[i]賦值給result[j]動畫71現(xiàn)在是71頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456004321這之后,i變成4而j變成1動畫72現(xiàn)在是72頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456004321i(=4)依舊小于6動畫73現(xiàn)在是73頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456054321i=4而j=1將list[i]賦值給result[j]動畫74現(xiàn)在是74頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456054321這之后,i變成5而j變成0動畫75現(xiàn)在是75頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456054321i(=5)依舊小于6動畫76現(xiàn)在是76頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456654321i=5而j=0將list[i]賦值給result[j]動畫77現(xiàn)在是77頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456654321這之后,

i變成6而j變成-1動畫78現(xiàn)在是78頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456654321i(=6)<6為假,所以退出循環(huán)動畫79現(xiàn)在是79頁\一共有103頁\編輯于星期一跟蹤reverse方法(續(xù))publicstaticint[]reverse(int[]list){int[]result=newint[list.length];

for(inti=0,j=result.length-1;i<list.length;i++,j--){result[j]=list[i];}

returnresult;}int[]list1=newint[]{1,2,3,4,5,6};int[]list2=reverse(list1);listresult123456654321返回resultlist2動畫80現(xiàn)在是80頁\一共有103頁\編輯于星期一問題:統(tǒng)計(jì)每個字母出現(xiàn)的次數(shù)隨機(jī)生成100個小寫字母,將它們賦值給一個字符數(shù)組。統(tǒng)計(jì)數(shù)組中的每個字母的出現(xiàn)計(jì)數(shù)。CountLettersInArrayRun81現(xiàn)在是81頁\一共有103頁\編輯于星期一數(shù)組的搜索搜索就是在數(shù)組中尋找特定元素的過程;例如:判斷某一特定分?jǐn)?shù)是否包含在成績列表中。搜索是計(jì)算機(jī)程序設(shè)計(jì)中一種經(jīng)常要完成的任務(wù)。有許多關(guān)于搜索的算法和數(shù)據(jù)結(jié)構(gòu)。在本節(jié)中,討論兩種常用的方法:線性查找法和二分查找法。82現(xiàn)在是82頁\一共有103頁\編輯于星期一線性查找法線性查找法就是將要查找的關(guān)鍵元素key順序地與數(shù)組list中的每一個元素進(jìn)行比較。這個方法一直繼續(xù)直到在列表中找到與關(guān)鍵字匹配的元素,還有一種情況就是忙乎了半天,在list中也沒找到匹配的元素。如果匹配成功,線性查找法返回與數(shù)組中與關(guān)鍵字匹配的元素的下標(biāo)。如果匹配不成功,則返回-1。83現(xiàn)在是83頁\一共有103頁\編輯于星期一線性查找法的動畫641973286419732864197328641973286419732864197328333333動畫KeyList84現(xiàn)在是84頁\一共有103頁\編輯于星期一從想法到解決方案/**Themethodforfindingakeyinthelist*/publicstaticintlinearSearch(int[]list,intkey){for(inti=0;i<list.length;i++)if(key==list[i])returni;return-1;}int[]list={1,4,4,2,5,-3,6,2};inti=linearSearch(list,4);//returns1intj=linearSearch(list,-4);//returns-1intk=linearSearch(list,-3);//returns5跟蹤這個方法85現(xiàn)在是85頁\一共有103頁\編輯于星期一二分查找法使用二分查找法的前提是數(shù)組中的元素必須已經(jīng)被排好序。為不時一般性,假設(shè)數(shù)組以升序排序。例如:24710114550596066697079二分查找法首先將關(guān)鍵字key與數(shù)組中間的元素進(jìn)行比較。86現(xiàn)在是86頁\一共有103頁\編輯于星期一二分查找法(續(xù))如果關(guān)鍵字key小于中間元素,你只需要在數(shù)組的前半部分的元素中繼續(xù)查找關(guān)鍵字。如果關(guān)鍵字key等于中間元素,這個查找結(jié)束。如果關(guān)鍵字key大于中間元素,你只需要在數(shù)組的后半部分的元素中繼續(xù)查找關(guān)鍵字??紤]下面三種情況:87現(xiàn)在是87頁\一共有103頁\編輯于星期一二分查找法123467891234678912346789888KeyList動畫88現(xiàn)在是88頁\一共有103頁\編輯于星期一二分查找法(續(xù))89現(xiàn)在是89頁\一共有103頁\編輯于星期一BinarySearch,cont.90現(xiàn)在是90頁\一共有103頁\編輯于星期一二分查找法(續(xù))方法binarySearch返回?cái)?shù)列中與關(guān)鍵字匹配的元素的下標(biāo)。否則,它將返回

-insertionpoint-1插入點(diǎn)在關(guān)鍵字被嵌入到數(shù)列的位置

91現(xiàn)在是91頁\一共有103頁\編輯于星期一從想法到解決方案/**Usebinarysearchtofindthekeyinthelist*/publicstaticintbinarySearch(int[]list,intkey){intlow=0;inthigh=list.length-1;

while(high>=low){intmid=(low+high)/2;if(key<list[mid])high=mid-1;elseif(key==list[mid])returnmid;elselow=mid+1;}

return-1-low;}92現(xiàn)在是92頁\一共有103頁\編輯于星期一方法Arrays.binarySearch由于二分查找法經(jīng)常在程序設(shè)計(jì)中用到,所以Java在類java.util.Arrays提供了方法binarySearch的幾個重載方法,它們可以在由int、double、char、short、long,和float構(gòu)成數(shù)組中搜索關(guān)鍵字。例如:下面的代碼在包含數(shù)字的數(shù)組和包含字符的數(shù)組中查找關(guān)鍵字。int[]list={2,4,7,10,11,45,50,59,60,66,69,70,79};System.out.println("Indexis"+java.util.Arrays.binarySearch(list,11));

char[]chars={'a','c','g','x','y','z'};System.out.println("Indexis"+java.util.Arrays.binarySearch(chars,'t'));

為使binarySearch正常運(yùn)轉(zhuǎn),必須使數(shù)組按升序排列。返回4返回–4(返回點(diǎn)是3,所以返回-3-1)93現(xiàn)在是93頁\一共有103頁\編輯于星期一數(shù)組的排序像查找一樣,排序在計(jì)算機(jī)程序設(shè)計(jì)中也是一個常用任務(wù)。已經(jīng)開發(fā)出許多不同的排序算法。本節(jié)將介紹兩種簡單的、直觀的排序算法:選擇排序法和插入排序法。94現(xiàn)在是94頁\一共有103頁\編輯于星期一選擇排序就是找到數(shù)列中的最小數(shù)并將它放在最前面。然后找到剩余數(shù)中最小的并將它放到最前面第二位,直到數(shù)列中只包含一個數(shù)字。圖6.17顯示如何使用選擇排序法對隊(duì)列{2、9、5、4、8、1、6}進(jìn)行排序。選擇排序法95現(xiàn)在是95頁\一共有103頁\編輯于星期一從想法到解決方案for(inti=0;i<list.length;i++){selectthesmallestelementinlist[i..listSize-1];swapthesmallestwithlist[i],ifnecessary;//list[i]isinitscorrectposition.//Thenextiterationapplyonlist[i..listSize-1]}list[0]list[1]list[2]list[3]...list[10]list[0]list[1]list[2]list[3]...list[10]list[0]list[1]list[2]list[3]...list[10]list[0]list[1]list[2]list[3]...list[10]list[0]list[1]list[2]list[3]...list[10]

溫馨提示

  • 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

提交評論