Java数组操作经典例题大总结

网友投稿 304 2022-08-18


Java数组操作经典例题大总结

目录数组中元素的求和使用二维数组打印一个10行的杨辉三角求数值型数组中元素的最大值、最小值、平均数、总和等*使用简单数组线性查找二分法查找冒泡排序求一个3*3矩阵对角线元素之和总结

数组中元素的求和

public class T02 {

public static void main(String[] args) {

int[][]arr=new int[][]{{1,2,3,4,5},{1,2,3,5},{8,9,7}};

int sum=0;

for(int i=0;i< arr.length;i++){

for(int j=0;j

sum=arr[i][j]+sum;

}

}

System.out.println("sum="+sum);

}

}

//和为50

使用二维数组打印一个10行的杨辉三角

public class T02 {

public static void main(String[] args) {

//声明并且初始化数组

int[][]arr=new int[10][];

//给数组的元素赋值

for(int i=0;i< arr.length;i++){

arr[i]=new int[i+1];

arr[i][0]=arr[i][i]=1;

if(i>1){

for(int k=1;k

arr[i][k]=arr[i-1][k-1]+arr[i-1][k];

}

}

}

//遍历数组

for(int i=0;i< arr.length;i++){

for(int j=0;j

System.out.print(arr[i][j]+"\t");

}

System.out.println();

}

}

}

求数值型数组中元素的最大值、最小值、平均数、总和等

public class T03 {

public static void main(String[] args) {

int[] arr=new int[10];

for(int i=0;i< arr.length;i++){

arr[i]=(int)Math.random()*((99-10+1)+10);

//[a,b]中的随机数的公式:Math.readom()*((b-a+1)+a).

//注意这里出来的为double类型。

}

//求最大值

int maximum=0;

for(int i=0;i< arr.length;i++){

if(maximum

maximum=arr[i];

}

}

System.out.println("最大值为:"+maximum);

//求最小值

int minimum=arr[0];

for(int i=1;i< arr.length;i++){

if(minimum>arr[i]){

minimum=arr[i];

}

}

System.out.println("最大值为:"+minimum);

//求和

int sum=0;

for(int i=1;i< arr.length;i++){

sum=sum+arr[i];

}

System.out.println("sum:"+sum);

/http:///求平均数

System.out.println("平均数为:"+sum/ arr.length);

}

}

*使用简单数组

(1)创建一个名为T04的类,在main()方法中声明array1和array2两个变量

他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0, array[2]=2)。打印出array1。**思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制

public class T04 {

public static void main(String[] args) {

int[] array1,array2;

http:// array1=new int[]{2,3,5,7,11,13,17,19};

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}     //赋值array1变量等于array2     //不能称作数组的复制

array2=array1;

for(int i=0;i< array1.length;i++){

if(i%2==0){

array2[i]=i;

}

}

System.out.println();

System.out.println("******************************************");

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}

}

}

(1)array1与array2的地址值一样,都指向了堆空间唯一的数组实体

(2)

for(int i=0;i< array1.length;i++){

array2[i]=array1[i];

}

方法2

int i=0;

int j=0;

for(i=0,j= arr.length-1;i

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结

sum=arr[i][j]+sum;

}

}

System.out.println("sum="+sum);

}

}

//和为50

使用二维数组打印一个10行的杨辉三角

public class T02 {

public static void main(String[] args) {

//声明并且初始化数组

int[][]arr=new int[10][];

//给数组的元素赋值

for(int i=0;i< arr.length;i++){

arr[i]=new int[i+1];

arr[i][0]=arr[i][i]=1;

if(i>1){

for(int k=1;k

arr[i][k]=arr[i-1][k-1]+arr[i-1][k];

}

}

}

//遍历数组

for(int i=0;i< arr.length;i++){

for(int j=0;j

System.out.print(arr[i][j]+"\t");

}

System.out.println();

}

}

}

求数值型数组中元素的最大值、最小值、平均数、总和等

public class T03 {

public static void main(String[] args) {

int[] arr=new int[10];

for(int i=0;i< arr.length;i++){

arr[i]=(int)Math.random()*((99-10+1)+10);

//[a,b]中的随机数的公式:Math.readom()*((b-a+1)+a).

//注意这里出来的为double类型。

}

//求最大值

int maximum=0;

for(int i=0;i< arr.length;i++){

if(maximum

maximum=arr[i];

}

}

System.out.println("最大值为:"+maximum);

//求最小值

int minimum=arr[0];

for(int i=1;i< arr.length;i++){

if(minimum>arr[i]){

minimum=arr[i];

}

}

System.out.println("最大值为:"+minimum);

//求和

int sum=0;

for(int i=1;i< arr.length;i++){

sum=sum+arr[i];

}

System.out.println("sum:"+sum);

/http:///求平均数

System.out.println("平均数为:"+sum/ arr.length);

}

}

*使用简单数组

(1)创建一个名为T04的类,在main()方法中声明array1和array2两个变量

他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0, array[2]=2)。打印出array1。**思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制

public class T04 {

public static void main(String[] args) {

int[] array1,array2;

http:// array1=new int[]{2,3,5,7,11,13,17,19};

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}     //赋值array1变量等于array2     //不能称作数组的复制

array2=array1;

for(int i=0;i< array1.length;i++){

if(i%2==0){

array2[i]=i;

}

}

System.out.println();

System.out.println("******************************************");

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}

}

}

(1)array1与array2的地址值一样,都指向了堆空间唯一的数组实体

(2)

for(int i=0;i< array1.length;i++){

array2[i]=array1[i];

}

方法2

int i=0;

int j=0;

for(i=0,j= arr.length-1;i

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结

arr[i][k]=arr[i-1][k-1]+arr[i-1][k];

}

}

}

//遍历数组

for(int i=0;i< arr.length;i++){

for(int j=0;j

System.out.print(arr[i][j]+"\t");

}

System.out.println();

}

}

}

求数值型数组中元素的最大值、最小值、平均数、总和等

public class T03 {

public static void main(String[] args) {

int[] arr=new int[10];

for(int i=0;i< arr.length;i++){

arr[i]=(int)Math.random()*((99-10+1)+10);

//[a,b]中的随机数的公式:Math.readom()*((b-a+1)+a).

//注意这里出来的为double类型。

}

//求最大值

int maximum=0;

for(int i=0;i< arr.length;i++){

if(maximum

maximum=arr[i];

}

}

System.out.println("最大值为:"+maximum);

//求最小值

int minimum=arr[0];

for(int i=1;i< arr.length;i++){

if(minimum>arr[i]){

minimum=arr[i];

}

}

System.out.println("最大值为:"+minimum);

//求和

int sum=0;

for(int i=1;i< arr.length;i++){

sum=sum+arr[i];

}

System.out.println("sum:"+sum);

/http:///求平均数

System.out.println("平均数为:"+sum/ arr.length);

}

}

*使用简单数组

(1)创建一个名为T04的类,在main()方法中声明array1和array2两个变量

他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0, array[2]=2)。打印出array1。**思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制

public class T04 {

public static void main(String[] args) {

int[] array1,array2;

http:// array1=new int[]{2,3,5,7,11,13,17,19};

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}     //赋值array1变量等于array2     //不能称作数组的复制

array2=array1;

for(int i=0;i< array1.length;i++){

if(i%2==0){

array2[i]=i;

}

}

System.out.println();

System.out.println("******************************************");

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}

}

}

(1)array1与array2的地址值一样,都指向了堆空间唯一的数组实体

(2)

for(int i=0;i< array1.length;i++){

array2[i]=array1[i];

}

方法2

int i=0;

int j=0;

for(i=0,j= arr.length-1;i

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结

System.out.print(arr[i][j]+"\t");

}

System.out.println();

}

}

}

求数值型数组中元素的最大值、最小值、平均数、总和等

public class T03 {

public static void main(String[] args) {

int[] arr=new int[10];

for(int i=0;i< arr.length;i++){

arr[i]=(int)Math.random()*((99-10+1)+10);

//[a,b]中的随机数的公式:Math.readom()*((b-a+1)+a).

//注意这里出来的为double类型。

}

//求最大值

int maximum=0;

for(int i=0;i< arr.length;i++){

if(maximum

maximum=arr[i];

}

}

System.out.println("最大值为:"+maximum);

//求最小值

int minimum=arr[0];

for(int i=1;i< arr.length;i++){

if(minimum>arr[i]){

minimum=arr[i];

}

}

System.out.println("最大值为:"+minimum);

//求和

int sum=0;

for(int i=1;i< arr.length;i++){

sum=sum+arr[i];

}

System.out.println("sum:"+sum);

/http:///求平均数

System.out.println("平均数为:"+sum/ arr.length);

}

}

*使用简单数组

(1)创建一个名为T04的类,在main()方法中声明array1和array2两个变量

他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0, array[2]=2)。打印出array1。**思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制

public class T04 {

public static void main(String[] args) {

int[] array1,array2;

http:// array1=new int[]{2,3,5,7,11,13,17,19};

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}     //赋值array1变量等于array2     //不能称作数组的复制

array2=array1;

for(int i=0;i< array1.length;i++){

if(i%2==0){

array2[i]=i;

}

}

System.out.println();

System.out.println("******************************************");

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}

}

}

(1)array1与array2的地址值一样,都指向了堆空间唯一的数组实体

(2)

for(int i=0;i< array1.length;i++){

array2[i]=array1[i];

}

方法2

int i=0;

int j=0;

for(i=0,j= arr.length-1;i

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结

maximum=arr[i];

}

}

System.out.println("最大值为:"+maximum);

//求最小值

int minimum=arr[0];

for(int i=1;i< arr.length;i++){

if(minimum>arr[i]){

minimum=arr[i];

}

}

System.out.println("最大值为:"+minimum);

//求和

int sum=0;

for(int i=1;i< arr.length;i++){

sum=sum+arr[i];

}

System.out.println("sum:"+sum);

/http:///求平均数

System.out.println("平均数为:"+sum/ arr.length);

}

}

*使用简单数组

(1)创建一个名为T04的类,在main()方法中声明array1和array2两个变量

他们是int[]类型的数组。

(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。

(3)显示array1的内容。

(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0, array[2]=2)。打印出array1。**思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制

public class T04 {

public static void main(String[] args) {

int[] array1,array2;

http:// array1=new int[]{2,3,5,7,11,13,17,19};

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}     //赋值array1变量等于array2     //不能称作数组的复制

array2=array1;

for(int i=0;i< array1.length;i++){

if(i%2==0){

array2[i]=i;

}

}

System.out.println();

System.out.println("******************************************");

for(int i=0;i< array1.length;i++){

System.out.print(array1[i]+"\t");

}

}

}

(1)array1与array2的地址值一样,都指向了堆空间唯一的数组实体

(2)

for(int i=0;i< array1.length;i++){

array2[i]=array1[i];

}

方法2

int i=0;

int j=0;

for(i=0,j= arr.length-1;i

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结

int a=arr[i];

arr[i]=arr[j];

arr[j]=a;

}

线性查找

public class T05 {

public static void main(String[] args) {

int[]arr=new int[]{1,2,3,4,5,6,7,8,9};

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

System.out.println();

for(int i=0;i< arr.length;i++){

if(i< arr.length-1-i){

int a=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=a;

}

}

for(int i=0;i< arr.length;i++){

System.out.print(arr[i]+"\t");

}

}

}

二分法查找

//前提必须是在有序的条件下

例子:先看一下从小到大的

import java.util.Scanner;

public class T07 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int a= s.nextInt();

int[]arr=new int[]{1,2,3,4,6,7,8,9,10};

int left=0;

int right= arr.length-1;

boolean is=true;

while(left<=right){

int average=(int)(left+right)/2;

if(arr[average]>a){

right=average-1;

} else if(a==arr[average]){

System.out.println("找到了,下标是:"+average);

is=false;

} else {

left = average + 1;

// }if(left==right){

// System.out.println("没有找到");

// is=false;

}

}

if(is){

System.out.println("很遗憾没有找到");

}

}

}

冒泡排序

public class T08 {

public static void main(String[] args) {

int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};

for(int i=0;i< arr.length-1;i++){

for(int j=0;j< arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

int a=arr[j];

arr[j]=arr[j+1];

arr[j+1]=a;

}

}

}

for(int i=0;i< arr.length;i++) {

System.out.println(arr[i]);

}

}

}

求一个3*3矩阵对角线元素之和

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**

* 求一个3*3矩阵对角线元素之和

*

* @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++){ //随机生成矩阵

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){ //如果为对角线元素

sum += arr[i][j]; //求和

}

}

System.out.println(); //每输出3个元素换行

}

System.out.println("此矩阵对角线的和为:"+sum);

}

}

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot2零基础到精通之映射与常用注解请求处理
下一篇:mybatis QueryWrapper的条件构造之apply、last、select解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~