Java語言程序設(shè)計(jì)05_第1頁(yè)
Java語言程序設(shè)計(jì)05_第2頁(yè)
Java語言程序設(shè)計(jì)05_第3頁(yè)
Java語言程序設(shè)計(jì)05_第4頁(yè)
Java語言程序設(shè)計(jì)05_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一維數(shù)組數(shù)組及其應(yīng)用數(shù)組中包含一批數(shù)據(jù)(數(shù)列),一個(gè)數(shù)組包含若干個(gè)相同數(shù)據(jù)類型的變量,每個(gè)變量被稱為一個(gè)數(shù)組元素,數(shù)組的元素個(gè)數(shù)稱為數(shù)組的長(zhǎng)度。它們具有相同的數(shù)據(jù)類型,它們是有序的,數(shù)組下標(biāo)從0開始。數(shù)組數(shù)據(jù)類型[]數(shù)組名或數(shù)據(jù)類型數(shù)組名[]inta[];或int[]a;double[]arrray1,array2;定義一維數(shù)組變量

數(shù)組名=new數(shù)據(jù)類型[長(zhǎng)度]a=newint[5];為數(shù)組分配空間數(shù)組的存儲(chǔ)方式引用地址12345一維數(shù)組AA[0]A[1]A[2]A[3]A[4]有十個(gè)學(xué)生的某科目成績(jī),要求輸出高于平均分的成績(jī)。先計(jì)算平均成績(jī),然后再次查看所有學(xué)生成績(jī),輸出高于平均分的成績(jī)。程序示例,Array_01思路int[]a,b; //inta[],b[];a=newint[5];b=newint[10];…a=b;數(shù)組可以互相賦值數(shù)組賦值a=b,是引用地址的賦值引用地址12345一維數(shù)組AA[0]A[1]A[2]A[3]A[4]數(shù)組的邊界越界時(shí)發(fā)生運(yùn)行時(shí)錯(cuò)誤length屬性數(shù)組初始化未初始化調(diào)用發(fā)生運(yùn)行時(shí)錯(cuò)誤訪問數(shù)組時(shí)常見錯(cuò)誤有十個(gè)學(xué)生的某科目成績(jī),要求輸出高于平均分的成績(jī)。使用數(shù)組的length屬性可提高程序質(zhì)量。修改Array_01思路一維數(shù)組應(yīng)用數(shù)組及其應(yīng)用數(shù)組中存放若干數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中。輸入一個(gè)數(shù)據(jù),逐一查看數(shù)組中存儲(chǔ)的數(shù)據(jù),若與輸入數(shù)據(jù)相同,則輸出找到了信息并輸出其位置下標(biāo),如果數(shù)據(jù)不在數(shù)組中,則輸出沒找到。程序示例,ArraySearch思路數(shù)組中存放若干數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中,如果在,刪除這個(gè)數(shù)據(jù),如果不存在則輸出不在的提示信息。采用類似于排隊(duì)的思路,例如我們刪除的是第3個(gè)數(shù)據(jù),則原來第4個(gè)數(shù)據(jù)變?yōu)榈?個(gè)數(shù)據(jù),第5個(gè)數(shù)據(jù)變?yōu)榈?個(gè)數(shù)據(jù),以此類推。程序示例,ArrayDelete思路一數(shù)組中存放若干數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中,如果在,刪除這個(gè)數(shù)據(jù),如果不存在則輸出不在的提示信息。題目并沒有要求必須移動(dòng)數(shù)據(jù),因此我們只需選擇一個(gè)不在應(yīng)用范圍內(nèi)的數(shù)據(jù)作為當(dāng)前位置沒有數(shù)據(jù)的標(biāo)志,例如如果我們處理的是成績(jī),可以用數(shù)字-1作為成績(jī)不存在的標(biāo)記。程序示例,ArrayDelete2思路二二維數(shù)組及其應(yīng)用數(shù)組及其應(yīng)用inta[][];int[][]a;a=newint[3][4];二維數(shù)組二維數(shù)組的存儲(chǔ)引用地址二維數(shù)組AA[0]A[1]A[2]A[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]int[][]a;a=newint[3][];a[0]=newint[2];a[1]=newint[3];a[2]=newint[4];二維數(shù)組的每行元素可以不同輸入n*n的二維數(shù)組數(shù)據(jù),輸出其主對(duì)角線和副對(duì)角線數(shù)據(jù)之和。訪問二維數(shù)組元素采用雙重循環(huán),外層循環(huán)控制訪問每一行,內(nèi)層循環(huán)控制訪問該行中的元素。主對(duì)角線元素行和列的下標(biāo)相同,副對(duì)角線元素行和列的下標(biāo)之和為n-1。程序示例,ArrayDiagonal思路假定在3*4的矩陣中的最大值和最小值都僅有一個(gè),編寫程序,交換矩陣中最大值與最小值所在的行。先找到最大值和最小值,記住其所在的行,查找方式與一維數(shù)組時(shí)相同;交換這兩行中對(duì)應(yīng)元素的數(shù)據(jù):對(duì)于這兩行中的每一個(gè)對(duì)位元素,都要交換,顯然需要使用針對(duì)該行元素個(gè)數(shù)的一個(gè)循環(huán)。程序示例,ArraySwap思路查找和排序數(shù)組及其應(yīng)用示例ArraySearch:數(shù)組中存放若干數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中。程序的運(yùn)行效率:這是一個(gè)順序查找算法,如果有n個(gè)數(shù)據(jù),最多需要判斷n次。查找問題查找:判斷某數(shù)據(jù)是否在指定的數(shù)據(jù)集中順序查找沒有前提條件,當(dāng)數(shù)組是有序的,可以采用二分查找提高程序的運(yùn)行效率。數(shù)組中存放若干有序數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中。輸入一個(gè)數(shù)據(jù),與這批數(shù)據(jù)的二分位置上的數(shù)進(jìn)行比較,若與輸入數(shù)據(jù)相同,則輸出找到了信息并輸出其位置下標(biāo);若該數(shù)大于輸入數(shù)據(jù),則在前半部分繼續(xù)查找,反之在后半部分繼續(xù)查找。二分查找算法,BinarySearch思路二分查找二分查找sme二分查找sme二分查找sme二分查找sme二分查找sme數(shù)組中存放若干有序數(shù)據(jù),輸入一個(gè)數(shù)據(jù),判斷此數(shù)據(jù)是否在數(shù)組中。找到了,mid就是其位置;沒找到,start>end二分查找算法,BinarySearch結(jié)束條件smesessee排序:選擇排序24681013579數(shù)組中存放若干無序數(shù)據(jù),將其按由小到大的次序進(jìn)行排序后輸出。每次在若干無序數(shù)據(jù)中找到最小數(shù),將其放在無序數(shù)據(jù)的首位??偣策M(jìn)行N-1次選擇。選擇排序示例,SortSelection思路4938659776132749’1338659776492749’1327659776493849’1327389776496549’1327384976976549’1327384949’9765761327384949’6597761327384949’657697數(shù)組中存放若干無序數(shù)據(jù),將其按由小到大的次序進(jìn)行排序后輸出。從頭到尾比較相鄰的兩個(gè)數(shù)據(jù),如果不符合排序要求,則交換這兩個(gè)數(shù)。冒泡排序示例,SortBubble思路輪次

數(shù)據(jù)024681013579124681357910224613578910324135678910421345678910512345678910612345678910在java.util包中針對(duì)數(shù)組的與查找排序有關(guān)的函數(shù)binarySearch(double[]a,doublekey)binarySearch(int[]a,intkey)sort(double[]a)sort(int[]a)Arrays類

Arrays類中sort函數(shù)和binarySearch函數(shù)使用示例。使用split進(jìn)行字符串中單詞的提取。使用Arrays中的sort方法對(duì)字符串?dāng)?shù)組進(jìn)行排序。程序示例,ArraysSort思路程序設(shè)計(jì)實(shí)例數(shù)組及其應(yīng)用編寫程序,輸入一個(gè)字母序列,將其用密碼本加密輸出。獲取輸入的字符數(shù)組后,判斷數(shù)組中每一個(gè)字符在字母表中的位置,輸出密碼本上對(duì)應(yīng)位置的替換字符。程序示例,CharChange思路數(shù)組中存儲(chǔ)若干個(gè)學(xué)生的學(xué)號(hào)和A、B、C三個(gè)科目的成績(jī),輸入學(xué)號(hào),輸出其對(duì)應(yīng)的各科目的分?jǐn)?shù)、總分。用二維數(shù)組存儲(chǔ)數(shù)據(jù),先初始化學(xué)生及其成績(jī),計(jì)算總成績(jī);輸入學(xué)號(hào),在二維數(shù)組中的第一列上查找對(duì)應(yīng)學(xué)號(hào),輸出其各科成績(jī)和總成績(jī)。程序示例,Grade1思路數(shù)組中存儲(chǔ)若干個(gè)學(xué)生的學(xué)號(hào)和A、B、C三個(gè)科目的成績(jī),按總成績(jī)降序輸出學(xué)號(hào)、各科目的分?jǐn)?shù)、總分。計(jì)算總分,然后根據(jù)總分所在列數(shù)據(jù)降序排序,排序時(shí)注意該行數(shù)據(jù)要同時(shí)移動(dòng)。程序示例,Grade2思路用一維數(shù)組存儲(chǔ)撲克牌數(shù)字值(0-53),編寫洗牌程序,即隨機(jī)打亂撲克牌的次序。為每張撲克牌產(chǎn)生一個(gè)對(duì)應(yīng)的隨機(jī)數(shù),這就像在每張撲克牌上寫一個(gè)隨機(jī)數(shù),然后按撲克牌上的隨機(jī)數(shù)對(duì)撲克牌進(jìn)行排序。在排序之前,撲克牌是有序的,而其上(其所對(duì)應(yīng))的數(shù)字是隨機(jī)的;在排序完成后,撲克牌上隨機(jī)數(shù)是有序的,撲克牌本身就是隨機(jī)的了。程序示例,PokerShuttle思路總結(jié)與程序設(shè)計(jì)實(shí)踐數(shù)組及其應(yīng)用數(shù)組中存儲(chǔ)的是占據(jù)連續(xù)存儲(chǔ)空間的并且具有相同數(shù)據(jù)類型的數(shù)據(jù),數(shù)組名中存放的是這批數(shù)據(jù)中第一個(gè)數(shù)據(jù)位置的引用;數(shù)組的下標(biāo)從0開始,數(shù)組中第i個(gè)元素的下標(biāo)是i-1;數(shù)組的length是數(shù)組的屬性值,記錄數(shù)組的長(zhǎng)度,編程時(shí)盡量使用它以保證程序的可讀性、以及擴(kuò)展的靈活性;Java中的數(shù)組使用前需使用new關(guān)鍵字創(chuàng)建,這是一條可執(zhí)行語句,保證了根據(jù)實(shí)際需要?jiǎng)?chuàng)建合適大小數(shù)組的靈活性;Java中二維數(shù)組中每一行元素的個(gè)數(shù)是可以不同的;應(yīng)該掌握兩種查找算法(順序查找、二分查找)和兩種排序算法(選擇排序、冒泡排序)的程序編寫技術(shù);Random類使得生成某些特定范圍的隨機(jī)數(shù)更為方便,雖然使用數(shù)學(xué)函數(shù)類中的隨機(jī)數(shù)函數(shù)也可以完成同樣功能。總結(jié)和注意事項(xiàng)數(shù)組中存放10個(gè)同學(xué)的學(xué)號(hào)和某科目成績(jī),輸入學(xué)號(hào),查找其成績(jī),數(shù)組中不存在該學(xué)號(hào)則輸出wrong。在含有10個(gè)正整數(shù)的有序數(shù)組中(注意,數(shù)組中可存放的元素個(gè)數(shù)應(yīng)大于10)插入一個(gè)數(shù)字,要求插入后保持?jǐn)?shù)組仍有序。輸出n*n整型數(shù)組中最大值(假定唯一)所在行的和與最

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論