更新時(shí)間:2020-08-24 16:59:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2148次
1. 有一個(gè)已經(jīng)排好序的數(shù)組。現(xiàn)輸入一個(gè)數(shù),要求按原來(lái)的規(guī)律將它插入數(shù)組中。
分析思路:
先通過(guò)Random類隨機(jī)創(chuàng)建一個(gè)數(shù)組,再調(diào)用Arrays類中的排序方法sort排好序,然后再開(kāi)始實(shí)現(xiàn)功能。
按原來(lái)的規(guī)律插入數(shù)組,很簡(jiǎn)單,只要找到合適的插入位置n,然后將n之前的數(shù)組元素直接復(fù)制到新數(shù)組的對(duì)應(yīng)位置,n處插入輸入的數(shù)字,n之后的元素后移一格再移到新數(shù)組就完成了。
最關(guān)鍵的就是要找到合適的插入位置。而查找算法顯然二分查找為優(yōu)。這里我投了個(gè)懶,直接使用Arrays類中的二分查找方法binarySearch()來(lái)查找輸入的num,若數(shù)組中存在和num一樣的數(shù),則該方法的返回值即為該數(shù)的下標(biāo)位置,那么插入位置n就是這個(gè)返回值;而如果數(shù)組中不存在num,則該方法能夠返回一個(gè)負(fù)數(shù),num比數(shù)組第一個(gè)元素還小則為-1,此時(shí)插入位置應(yīng)該為0,大于第一個(gè)元素小于第二個(gè)元素為-2,此時(shí)插入位置應(yīng)為1,以此類推。。。那么顯然插入位置應(yīng)該為返回值取絕對(duì)值再減一。
找到位置實(shí)現(xiàn)就簡(jiǎn)單啦。具體代碼如下:
import?java.util.Arrays;
import?java.util.Random;
import?java.util.Scanner;
/**
?*?有一個(gè)已經(jīng)排好序的數(shù)組。現(xiàn)輸入一個(gè)數(shù),要求按原來(lái)的規(guī)律將它插入數(shù)組中。
?*
?*?@author?ChenZX
?*
?*/
public?class?Test03?{
????public?static?void?main(String[]?args)?{
????????Random?r?=?new?Random();
????????int[]?arr?=?new?int[10];
????????for(int?i=0;i<10;i++){????//隨機(jī)生成數(shù)組
????????????arr[i]=?r.nextInt(100);
????????}
????????System.out.println(Arrays.toString(arr));
????????Arrays.sort(arr);???//排序
????????System.out.println(Arrays.toString(arr));
????????Scanner?s?=?new?Scanner(System.in);
????????System.out.println("請(qǐng)輸入一個(gè)數(shù):");
????????int?num?=?s.nextInt();
????????s.close();
????????int?bs?=Arrays.binarySearch(arr,?num);?//二分查找的結(jié)果存入bs
????????int?n?=?0;?//插入位置
????????if(bs<0){?????????????//查找失敗,則插入位置為bs的絕對(duì)值-1
????????????n?=?Math.abs(bs)-1;
????????}else{????????//查找成功,則插入位置即bs
????????????n?=?bs;
????????}
????????System.out.println(bs);
????????int[]?arr2?=?new?int[arr.length+1];?//建立一個(gè)新數(shù)組,長(zhǎng)度為原數(shù)組長(zhǎng)度+1
????????for(int?i=0;i
2. 求一個(gè)3*3矩陣對(duì)角線元素之和
分析思路:
這是一道矩陣的編程實(shí)現(xiàn)題。Java中矩陣一般都是通過(guò)二維數(shù)組實(shí)現(xiàn)的。
具體代碼如下:
import?java.util.Random;
/**
?*?求一個(gè)3*3矩陣對(duì)角線元素之和
?*
?*?@author?ChenZX
?*
?*/
public?class?Test04?{
????public?static?void?main(String[]?args)?{
????????int?sum?=?0;?//和
????????int[][]?arr?=?new?int[3][3];
????????Random?r?=?new?Random();
????????for(int?i=0;i<3;i++){????//隨機(jī)生成矩陣
????????????for(int?j=0;j<3;j++){
????????????????arr[i][j]?=?r.nextInt(10);??//0到9
????????????}
????????}
????????for(int?i=0;i<3;i++){??????//遍歷矩陣
????????????for(int?j=0;j<3;j++){
????????????????System.out.print(arr[i][j]+"?");???//打印矩陣元素
????????????????if(i==j){???//如果為對(duì)角線元素
????????????????????sum?+=?arr[i][j];??//求和
????????????????}
????????????}
????????????System.out.println();?//每輸出3個(gè)元素?fù)Q行
????????}
????????System.out.println("此矩陣對(duì)角線的和為:"+sum);
????}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java數(shù)組編程練習(xí)題,每日練習(xí)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)