Java数组经典例题
Java数组经典例题
数组中元素的求和
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<arr[i].length;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].length-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<arr[i].length;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<arr[i]){
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);
//求平均数
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;
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];
}
数组的反转
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");
}
}
}
方法2
int i=0;int j=0;
for(i=0,j= arr.length-1;i<j;i++,j--){
int a=arr[i];
arr[i]=arr[j];
arr[j]=a;
}
线性查找
import java.util.Scanner;public class T06 {
public static void main(String[] args) {
int[]arr=new int[]{1,2,3,4,5,6,7,8,9};
Scanner s = new Scanner(System.in);
System.out.print("请输入你要找的值:");
int k= s.nextInt();
for(int i=0;i< arr.length;i++){
if(k==arr[i]){
System.out.println("找到了,下标是:"+i);
break;
} else{
System.out.println("找不到");
}
}
}
}
二分法查找
//前提必须是在有序的条件下
例子:先看一下从小到大的
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]);
}
}
}
以上是 Java数组经典例题 的全部内容, 来源链接: utcz.com/z/394949.html