学習のjava、4日目(問題とバブルソートの配列)
デイ
Q1:2次元配列の合計を求めて
public class day4 {
public static void main(String[] args){
//求二位数组总和
int[][] arr = new int[][] {
{3,8,2},
{2,7},
{9,0,1,6}
};
//老师给的计算方法
int len = arr.length;
int res = 0;
for(int i=0; i<len; i++) {//数组一维的长度
int[] arr0 = arr[i];
int lenn = arr0.length;
for(int j=0; j<lenn; j++) {//二维数组的长度
res += arr0[j];
}
}
System.out.println(res);
//输出结果为数组总和38
}
}
長い時間を理解していなかったようにあなたは第二の問題解決のアイデアが表示されるまで、このコードを参照してください。
//第二个解题思路
int res =0;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
res += arr[i][j];
}
}
System.out.println(res);
、しばらく初めて理解するが、慎重に考えていなかった
。アレイのような2次元マトリクスを
例えば:ARR [] []を第1のブラケット内に垂直であり、第二は、クロスある
iが0 =(INTのために、 I <arr.length; I ++)//この[i]は、すべての垂直線を表すというのが私の理解である
(int型J = 0のためにあり、j <ARR [i]の.LENGTHあり、j ++)//はこのことを私の理解です[ j]は、任意の横方向(すなわち、一次元アレイ)、表現
RES = + AII [I] [j]を; //これは[i]と[j]は、配列の各数を表すことが私の理解で[0] [0]から最終的に[2] [3]
//それら+ = 0全ての後、得られた結果:38
Q2:最大配列が求める
瞬間のために、自分の考えは、次のようなもの(実際にものを)書きました
int[] arr=new int[] {4,2,7,1,3,5};
int max = arr[0];
int k = 0;
for(int i=0; i<arr.length; i++) {
if(max > arr[i]) {
k += max;
}
}
System.out.println(k);
最終結果は、彼はそれが12である理由長時間好きであろうと12だった
し、最終的に全体を理解し、私はこのコードがあることであると言う
数は、アレイ内の最大値よりも大きい場合には、あなたがの最大値を追加します。
4 [0] ARRを
4 、1より大きく、3より大きく2よりも大きい
4 + 4 + 4 = 12
、次のコードを与えるために除去した後、K
int[] arr=new int[] {4,2,7,1,3,5};
int max = arr[0];
for(int i=0; i<arr.length; i++) {
if(max > arr[i]) {
max = arr[i];
}
}
System.out.println(max);
あなたが最高=を書くことを忘れてしまったので、セミコロンの後ろに[i]が編曲し、エラーもかなり長い時間を疑問視
し、答えを見て、ブラケットが少なく、最大ARRよりも必要がある場合以外に、以下セミコロン事故を書くためにことがわかった[i]を
再度実行します上記のコードは、結果はしばらく考え、後1であることが判明
と結論:4の番号iに割り当てられるよりも大きい、最終的な1の最小値となり、Iは最小値を見つけるためのコードとなっています。
Q3:求数组平均数
int[] arr=new int[] {4,2,7,1,3,5};
int res=0;
for(int i=0; i<arr.length; i++) {
res += arr[i];
}
System.out.println(res / arr.length);
あなたが書きたいかのコードがありませんが、結果は、私は、電卓を取らなければならなかった3考え出した
結果は3.6666でなければなりませんが、小数点int型の取得後の内容が破棄された瞬間のために考えられている、それは確かに3です。
Q4:アルゴリズムバブリング
原理バブルアルゴリズムは、2つの隣接する要素、後部大よりも前方の二つのスイッチング素子であり、
次のようにコード
int[] arr = new int[] {5,7,4,3,9};
int temp = 0;
//冒泡算法中,对比的算法会比数组长度少一次,所以在for中是.length - 1.
for(int i = 0; i < arr.length - 1; i++) {
//第二次循环是在第一次循环内,因为不可能有多少长度就写多少个循环,所以是.length - 1 - i;
//这里的i是每次都会减少,直到达到0为止
for(int k = 0; k < arr.length - 1 - i; k++) {
if(arr[k] > arr[k + 1]) {
//这里是冒泡算法中的把两个元素的位置调换
temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
}
}
}
//tips:要在循环外去打印
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
原理バブリングアルゴリズムは、理解するために再びそれを読んで、比較的無知な変換があり、しかし、脳のターンのように見えます。