版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2025年Java數(shù)組題庫及答案1.聲明并初始化一個(gè)包含5個(gè)元素的String數(shù)組,元素為"apple","banana","cherry","date","elderberry",輸出數(shù)組長度及第三個(gè)元素(索引從0開始)。答案:Java中數(shù)組的聲明和初始化可通過靜態(tài)初始化完成。代碼如下:```javaString[]fruits={"apple","banana","cherry","date","elderberry"};intlength=fruits.length;//數(shù)組長度為5StringthirdElement=fruits[2];//索引從0開始,第三個(gè)元素是索引2的"cherry"System.out.println("數(shù)組長度:"+length);System.out.println("第三個(gè)元素:"+thirdElement);```關(guān)鍵點(diǎn):數(shù)組索引從0開始,`length`屬性表示數(shù)組長度(非方法),靜態(tài)初始化時(shí)元素?cái)?shù)量決定數(shù)組長度。2.給定數(shù)組int[]arr={3,1,4,1,5,9,2,6},使用for循環(huán)遍歷并輸出所有偶數(shù)元素。答案:遍歷數(shù)組時(shí)需檢查每個(gè)元素是否為偶數(shù)(即對(duì)2取余等于0)。代碼如下:```javaint[]arr={3,1,4,1,5,9,2,6};for(inti=0;i<arr.length;i++){if(arr[i]%2==0){//偶數(shù)判斷條件System.out.print(arr[i]+"");}}//輸出結(jié)果:426```擴(kuò)展:若使用增強(qiáng)for循環(huán)(for-each),代碼可簡(jiǎn)化為:```javafor(intnum:arr){if(num%2==0){System.out.print(num+"");}}```3.編寫代碼將數(shù)組char[]src={'a','b','c'};復(fù)制到新數(shù)組dest,要求dest長度與src相同,且元素一致。答案:數(shù)組復(fù)制可通過循環(huán)逐個(gè)賦值或使用`System.arraycopy()`方法。推薦使用后者,效率更高。代碼如下:```javachar[]src={'a','b','c'};char[]dest=newchar[src.length];//初始化dest長度與src相同System.arraycopy(src,0,dest,0,src.length);//源數(shù)組、源起始位置、目標(biāo)數(shù)組、目標(biāo)起始位置、復(fù)制長度//驗(yàn)證復(fù)制結(jié)果for(charc:dest){System.out.print(c+"");//輸出abc}```關(guān)鍵點(diǎn):`System.arraycopy()`是本地方法(native),底層優(yōu)化,比手動(dòng)循環(huán)更高效;若數(shù)組類型為對(duì)象數(shù)組,復(fù)制的是引用而非對(duì)象本身(淺拷貝)。4.實(shí)現(xiàn)冒泡排序算法對(duì)int數(shù)組{5,3,8,4,6,2,7,1}進(jìn)行升序排序,要求優(yōu)化算法(當(dāng)某一輪未發(fā)生交換時(shí)提前終止),并說明優(yōu)化后的時(shí)間復(fù)雜度。答案:冒泡排序的核心是相鄰元素比較,每輪將最大元素“冒泡”到末尾。優(yōu)化點(diǎn)在于記錄每輪是否發(fā)生交換,若未交換則數(shù)組已有序,提前結(jié)束。代碼如下:```javaint[]arr={5,3,8,4,6,2,7,1};intn=arr.length;booleanswapped;for(inti=0;i<n1;i++){swapped=false;for(intj=0;j<ni1;j++){if(arr[j]>arr[j+1]){//升序比較//交換元素inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;swapped=true;}}if(!swapped){//本輪未交換,提前終止break;}}//排序后數(shù)組:[1,2,3,4,5,6,7,8]```時(shí)間復(fù)雜度:最壞情況(逆序)仍為O(n2),但最好情況(已排序)優(yōu)化為O(n)(僅一輪遍歷)。5.在有序數(shù)組int[]sortedArr={2,5,7,10,10,15,20}中,使用二分查找法查找元素10,要求返回所有匹配位置的索引(可能有重復(fù)元素)。答案:標(biāo)準(zhǔn)二分查找只能找到一個(gè)匹配位置,若需所有位置,需找到左邊界和右邊界。步驟:(1)找第一個(gè)10的索引;(2)找最后一個(gè)10的索引;(3)收集中間所有索引。代碼如下:```javaint[]sortedArr={2,5,7,10,10,15,20};inttarget=10;List<Integer>indices=newArrayList<>();//找左邊界intleft=0,right=sortedArr.length1;intfirst=-1;while(left<=right){intmid=left+(rightleft)/2;//防溢出if(sortedArr[mid]>=target){right=mid1;}else{left=mid+1;}}if(left<sortedArr.length&&sortedArr[left]==target){first=left;}//找右邊界left=0;right=sortedArr.length1;intlast=-1;while(left<=right){intmid=left+(rightleft)/2;if(sortedArr[mid]<=target){left=mid+1;}else{right=mid1;}}if(right>=0&&sortedArr[right]==target){last=right;}//收集所有索引if(first!=-1&&last!=-1){for(inti=first;i<=last;i++){indices.add(i);}}//輸出結(jié)果:[3,4]```關(guān)鍵點(diǎn):二分查找中`mid`的計(jì)算需避免`(left+right)/2`可能導(dǎo)致的整數(shù)溢出;通過調(diào)整比較條件(>=或<=)定位左右邊界。6.編寫方法實(shí)現(xiàn)兩個(gè)整數(shù)數(shù)組的合并,要求合并后的數(shù)組保持原有順序(如arr1=[1,3,5],arr2=[2,4,6],合并后為[1,3,5,2,4,6]),并處理其中一個(gè)數(shù)組為null的情況。答案:合并邏輯需處理數(shù)組為null的情況(視為空數(shù)組),計(jì)算總長度后創(chuàng)建新數(shù)組,依次復(fù)制元素。代碼如下:```javapublicstaticint[]mergeArrays(int[]arr1,int[]arr2){//處理null情況if(arr1==null)arr1=newint[0];if(arr2==null)arr2=newint[0];int[]merged=newint[arr1.length+arr2.length];//復(fù)制arr1元素System.arraycopy(arr1,0,merged,0,arr1.length);//復(fù)制arr2元素(從arr1長度位置開始)System.arraycopy(arr2,0,merged,arr1.length,arr2.length);returnmerged;}//測(cè)試用例int[]arr1={1,3,5};int[]arr2={2,4,6};int[]merged=mergeArrays(arr1,arr2);//[1,3,5,2,4,6]int[]mergedWithNull=mergeArrays(null,arr2);//[2,4,6]```關(guān)鍵點(diǎn):`System.arraycopy()`的目標(biāo)起始位置需設(shè)置為`arr1.length`,確保arr2元素接在arr1之后;null數(shù)組轉(zhuǎn)換為空數(shù)組避免`NullPointerException`。7.給定學(xué)提供績數(shù)組double[]scores={85.5,72.0,90.0,65.5,88.5,78.0,92.5,59.0,80.0,75.5};要求:(1)計(jì)算平均分(保留兩位小數(shù));(2)統(tǒng)計(jì)不及格(<60)人數(shù);(3)將成績按降序排序后輸出前三名。答案:(1)平均分通過總和除以數(shù)量計(jì)算,使用`DecimalFormat`保留兩位小數(shù);(2)遍歷數(shù)組統(tǒng)計(jì)<60的元素;(3)排序后取前三個(gè)元素。代碼如下:```javadouble[]scores={85.5,72.0,90.0,65.5,88.5,78.0,92.5,59.0,80.0,75.5};//(1)計(jì)算平均分doublesum=0;for(doublescore:scores){sum+=score;}doubleaverage=sum/scores.length;DecimalFormatdf=newDecimalFormat(".00");StringavgStr=df.format(average);//"80.70"http://(2)統(tǒng)計(jì)不及格人數(shù)intfailCount=0;for(doublescore:scores){if(score<60){failCount++;}}//結(jié)果:1(59.0)//(3)降序排序并取前三名double[]sorted=Arrays.copyOf(scores,scores.length);Arrays.sort(sorted);//升序排序后反轉(zhuǎn)for(inti=0;i<sorted.length/2;i++){doubletemp=sorted[i];sorted[i]=sorted[sorted.length1i];sorted[sorted.length1i]=temp;}//或直接使用流API(Java8+)://sorted=Arrays.stream(scores).boxed().sorted(Comparator.reverseOrder()).mapToDouble(Double::doubleValue).toArray();double[]topThree=Arrays.copyOfRange(sorted,0,3);//[92.5,90.0,88.5]```8.編寫程序處理二維數(shù)組int[][]matrix={{1,2,3},{4,5,6},{7,8,9}};要求:(1)輸出矩陣對(duì)角線元素之和(主對(duì)角線和副對(duì)角線,假設(shè)矩陣為n×n);(2)實(shí)現(xiàn)矩陣轉(zhuǎn)置(行列互換),并輸出轉(zhuǎn)置后的矩陣。答案:(1)主對(duì)角線元素滿足`i==j`,副對(duì)角線滿足`i+j==n1`(n為行數(shù));(2)轉(zhuǎn)置后新矩陣的`[i][j]`等于原矩陣的`[j][i]`。代碼如下:```javaint[][]matrix={{1,2,3},{4,5,6},{7,8,9}};intn=matrix.length;//(1)對(duì)角線之和intmainSum=0,antiSum=0;for(inti=0;i<n;i++){mainSum+=matrix[i][i];//主對(duì)角線antiSum+=matrix[i][n1i];//副對(duì)角線}//mainSum=1+5+9=15;antiSum=3+5+7=15;總和30//(2)矩陣轉(zhuǎn)置int[][]transposed=newint[n][n];for(inti=0;i<n;i++){for(intj=0;j<n;j++){transposed[j][i]=matrix[i][j];}}//轉(zhuǎn)置后矩陣:{{1,4,7},{2,5,8},{3,6,9}}```9.設(shè)計(jì)一個(gè)方法publicstaticint[]removeDuplicates(int[]arr),要求去除數(shù)組中的重復(fù)元素,保持原有順序(如輸入[3,2,3,1,2],輸出[3,2,1]),并說明該方法的時(shí)間復(fù)雜度及優(yōu)化方向。答案:保持順序的去重可通過遍歷數(shù)組,使用`ArrayList`記錄已出現(xiàn)元素,避免重復(fù)添加。代碼如下:```javapublicstaticint[]removeDuplicates(int[]arr){if(arr==null||arr.length==0){returnnewint[0];}List<Integer>list=newArrayList<>();for(intnum:arr){if(!list.contains(num)){//檢查是否已存在list.add(num);}}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 達(dá)人介紹教學(xué)
- 獸醫(yī)高級(jí)職稱試題及答案
- 湖南省長沙市長郡教育集團(tuán)2024-2025學(xué)年八年級(jí)上學(xué)期期末地理試題(含答案)
- 輔警政治培訓(xùn)課件教學(xué)
- 任務(wù) 7.2 工業(yè)機(jī)器人附件的常規(guī)檢查
- 第11課 馬克思主義的誕生與傳播 課件
- 創(chuàng)業(yè)故事介紹
- 全員安全檢查方案講解
- 會(huì)議記錄范本參考
- 舞蹈藝術(shù)職業(yè)規(guī)劃
- DB50∕T 1604-2024 地質(zhì)災(zāi)害防治邊坡工程結(jié)構(gòu)可靠性設(shè)計(jì)規(guī)范
- 非現(xiàn)場(chǎng)執(zhí)法培訓(xùn)課件
- 中國電氣裝備資產(chǎn)管理有限公司招聘筆試題庫2025
- 糖尿病足的護(hù)理常規(guī)講課件
- 2025年高考英語復(fù)習(xí)難題速遞之語法填空(2025年4月)
- 2025外籍工作人員勞動(dòng)合同范本
- 退化林地生態(tài)修復(fù)-深度研究
- 湖北省武漢市江岸區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版+解析版)
- 2025年《新課程標(biāo)準(zhǔn)解讀》標(biāo)準(zhǔn)課件
- 2024-2025學(xué)年同步試題 語文(統(tǒng)編版選擇性必修中冊(cè))8.2小二黑結(jié)婚
- 2024年1月國家開放大學(xué)漢語言本科《古代小說戲曲專題》期末紙質(zhì)考試試題及答案
評(píng)論
0/150
提交評(píng)論