面向?qū)ο蟪绦蛟O計第7講 數(shù)組(上)_第1頁
面向?qū)ο蟪绦蛟O計第7講 數(shù)組(上)_第2頁
面向?qū)ο蟪绦蛟O計第7講 數(shù)組(上)_第3頁
面向?qū)ο蟪绦蛟O計第7講 數(shù)組(上)_第4頁
面向?qū)ο蟪绦蛟O計第7講 數(shù)組(上)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7講數(shù)組(上)數(shù)組的聲明和創(chuàng)建數(shù)組的賦值和引用數(shù)組的應用數(shù)組排序選擇結(jié)構的程序設計循環(huán)結(jié)構的程序設計跳轉(zhuǎn)語句遞歸上講內(nèi)容回顧理解數(shù)組的概念了解使用數(shù)組的步驟:聲明數(shù)組引用變量、創(chuàng)建數(shù)組、初始化數(shù)組和處理數(shù)組掌握一維數(shù)組和二維數(shù)組的應用熟悉查找和數(shù)組排序的方法教學目標聲明數(shù)組數(shù)組要經(jīng)過聲明及初始化以后,才能被使用。數(shù)組的聲明方式有下面兩種:

1.數(shù)據(jù)類型數(shù)組名[];

2.數(shù)據(jù)類型[]數(shù)組名;其中類型(type)可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和組合類型,數(shù)組名arrayName為一個合法的標識符,[]指明該變量是一個數(shù)組類型變量。例如:int

intArray[];聲明了一個整型數(shù)組,數(shù)組中的每個元素為整型數(shù)據(jù)。數(shù)組中元素的個數(shù)稱為數(shù)組大小或數(shù)組長度。與C、C++不同,Java在數(shù)組的定義中并不為數(shù)組元素分配內(nèi)存,因此[]中不用指出數(shù)組中元素的個數(shù),即數(shù)組長度,而且對于如上定義的一個數(shù)組是不能訪問它的任何元素的。數(shù)組必須經(jīng)過初始化后,才能應用數(shù)組的元素。初始化數(shù)組靜態(tài)初始化數(shù)組的初始化分為靜態(tài)初始化和動態(tài)初始化兩種.

靜態(tài)初始化:在定義數(shù)組的同時對數(shù)組元素進行初始化,例如:

int

intArray[]={1,2,3,4};//定義了一個含有4個元素的int型數(shù)組。動態(tài)初始化動態(tài)初始化:使用運算符new為數(shù)組分配空間,對于簡單類型的數(shù)組,其格式如下:

typearrayName[]=newtype[arraySize];type[]arrayName=newtype[arraySize];對于復合類型的數(shù)組,需要經(jīng)過兩步空間分配。首先:typearrayName[]=newtype[arraySize];

然后:arrayName[0]=newtype(paramList);…arrayName[arraySize-1]=newtype(paramList);數(shù)組初始化實例例如:StringstringArrar[];//定義一個String類型的數(shù)組stringArray=newString[3];//給數(shù)組stringArra分配3個應用空間,初始化每個引用值為nullstringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);數(shù)組元素引用當定義了一個數(shù)組,并用運算符new為它分配了內(nèi)存空間后,就可以引用數(shù)組中的每一個元素了。元素的引用方式為:

arrayName[index]index為數(shù)組下標,可以是整型常數(shù)或表達式,如:arrayName[1],arrayName[i],arrayName[6*i]等。下標是0序的,即從0開始,一直到數(shù)組長度減1。通常,Java會自動進行數(shù)組下標越界檢查,如果下標超出該范圍,會產(chǎn)生ArrayIndexOutOfBoundsException異常。因此,編寫程序時最好使用數(shù)組的length屬性獲得數(shù)組大小,從而使下標不超出其取值范圍。

數(shù)組的賦值聲明數(shù)組的同時初始化數(shù)組,格式如下:數(shù)據(jù)類型[]數(shù)組名={第一個元素,第二個元素,第三個元素,…};先聲明并創(chuàng)建后,再賦值。例如,

int[]array1=newint[10];array1[0]=6;array1[1]=7;array1[2]=8;數(shù)組的應用(1)1、數(shù)組中元素的查找:順序查找順序查找通常用于一組無序的數(shù)據(jù)中查找。將待查找的數(shù)據(jù)與數(shù)組中的每一個元素依次進行比較,直到查找的數(shù)據(jù)與數(shù)組中的一個元素匹配或全部查找完為止。如果找到了一個匹配元素,則返回數(shù)組中該元素的位置。若沒有找到。則返回-1。順序查找(例1)在數(shù)組中存放10個隨機產(chǎn)生的整數(shù),輸出數(shù)組,并從數(shù)組中查找數(shù)據(jù)13。publicclassEx5_5{publicstaticvoidmain(String

args[]){

intlist[]=newint[10];

for(inti=0;i<list.length;i++){

list[i]=(int)(Math.random()*100);

System.out.print(list[i]+””); }

intflag=listsear(13,list);

if(flag!=-1) System.out.println(“13isfoundat”+flag);else System.out.println(“13isnotfound!”);publicstaticint

listsear(int

key,int[]list){

for(intj=0;j<list.length;j++)

if(key==list[j]) returnj;return-1;} }編寫程序,讀入10個整數(shù),求出它們中的最小數(shù)。importjava.util;publicclassEx5_1{publicstaticvoidmain(Stringargs[]){

intnum[]=newint[10];

System.out.println("請輸入10個整數(shù)");

for(inti=0;i<num.length;i++)

num[i]=DefInput.readInt();//ch2自定義類DefInput

intmin=num[0];

for(inti=1;i<num.length;i++)

if(min>num[i])min=num[i];

System.out.print("最小數(shù)是:"+min);}}順序查找(例2)數(shù)組應用(2)2、冒泡法排序用冒泡法對數(shù)列(74932)從小到大排序。分析:冒泡法排序的思路是將相鄰兩個數(shù)兩兩比較,把較小數(shù)調(diào)到前面。如有5個數(shù)7、4、9、3、2,要求按從小到大排序,比較步驟如下:冒泡法排序第1輪:

第一次7和4對調(diào),第二次因7<9不用對調(diào),第三次將9和3對調(diào),┅,得到4、7、3、2、9的順序。一輪比較后,最大數(shù)已在最后(沉底),小數(shù)向上移動(浮起)。如下所示。第1次:74932

第2次:47932

第3次:47932

第4次:47392

結(jié)果:47329冒泡法排序(續(xù))第2輪:

將前4個數(shù)4,7,3,2兩兩比較,次大數(shù)沉底。如下所示。第1次:47329

第2次:47329

第3次:43729

結(jié)果:4327

9

第3輪,得第3個大數(shù)。第4輪,得第4個大數(shù)。剩下的一個為最小數(shù)??梢娺@5個整數(shù)共需要4輪比較,在每一輪中,每個數(shù)需與它的后一個數(shù)比較。n個整數(shù)需要n-1輪比較。例5.2用冒泡法對數(shù)列(74932)從小到大排序。publicclassEx5_2{publicstaticvoidmain(String[]args){

int[]a={7,4,9,3,2};inti,j,t;

System.out.print("排序前數(shù)組元素是:");

for(i=0;i<5;i++)

System.out.print(a[i]+"");

System.out.println();

for(i=0;i<4;i++)

for(j=0;j<4-i;j++)

if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j

溫馨提示

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

評論

0/150

提交評論