数组,排序,查找( 一维数组)--JAVA

一.数组使用

--可以存放多个同一类型的数据,数据也是一种数据类型,是引用类型
从0开始标号
一个养鸡场6只鸡,体重3,5,1,3.4,2,6;请问这六只鸡的总体重是多少
double totalweight=0;
double[] hens={3 ,5, 1, 3.4, 2, 50};
//数组名.length得到数组的大小
for (int i =0 ; i<hens.length; i++){
System.out.println("第" +(i+1)+"个元素的值为"+hens[i])
totalweight +=hens[i];
}

①创建数组的三种方式
//创建一个double数组,大小5
double scores[] =new double[5];
Scanner myscanner = new Scanner(System.in);
for(int i =0;i<scores.length;i++){
System.out.println("请输入第"+(i+1)+"个元素的值");
scores[i] =myscanner.nextDouble();}

先声明再创建数组
double scores[];
scores=new double[5];

静态初始化
int a[]={2,4,5};

②数组的细节
1.数组是多个相同类型数据的组合,实现对这些数组的统一管理
2.数组中的元素可以是任何数据类型
3.数组下标从0开始
4.数组创建后,如果没有赋值,有默认值
5.数组是引用类型

 

1.创建一个char类型的26个元素的数组,分别放置‘A-Z’,使用for循环
char letter[] =new char[26];

for (int i =0 ; i<hens.length; i++){
System.out.println("第" +(i+1)+"个元素的值为"+hens[i])
totalweight +=hens[i];
}




//创建一个char类型的26个元素的数组,分别放置‘A-Z’,使用for循环
public class var {
public static void main(String[] args) {
//char letter[] ={'A','B','C','D','E','F','G'};
char[] letter = new char[26];
//char chars='A';
for (int i =0 ; i<letter.length; i++){
letter[i] =(char) ('A'+i);

//System.out.println("第" +(i+1)+"个元素的值为"+letter[i]);
System.out.println("第" +(i+1)+"个元素的值为"+letter[i]);

}
}
}


//请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标
public class var {
public static void main(String[] args) {
int letter[] ={4,-1,9,10,23};
int max=letter[0];
int maxindex=0;
for (int i =0 ; i<letter.length; i++){
//System.out.println("第" +(i+1)+"个元素的值为"+letter[i]);
if (max <letter[i]){
max=letter[i];
maxindex =i;
}

}
System.out.println("这个数组的最大值为"+max);
System.out.println("这个数组的最大值的下标为"+maxindex);
}
}

//求出一个数组的和和平均值
public class var {
public static void main(String[] args) {
double totalweight=0;
double[] hens={3 ,5, 1, 3.4, 2, 50};
for(int i =0;i< hens.length;i++){
totalweight +=hens[i];
}
System.out.println("sum="+totalweight);
System.out.println("平均值"+totalweight/hens.length);
}
}

二.数组的赋值机制

1.基本数据类型赋值,这个值就是具体的数据,互不影响
2.数组在默认情况下是引用 传递,赋的值是地址
int[] arr1={1,2,3};
int[] arr2 =arr1;//把arr1赋给arr2
arr2[0]=10;//{10,2,3}

 

 

 


数组拷贝

将int[] arr1={10,20,30};拷贝到arr2数组,要求数据空间是独立的
int[] arr1={10,20,30};
//创建一个新的数组arr2
int[] arr2=new int[arr1.length];
for(int i =0;i<arr1.length;i++){
arr2[i]=arr1[i];}

arr2[0]=100;

 

三.数组反转

//把arr[0]和arr[5]交换
//一共要交换3次=arr.length/2
//每次交换时,对应的下标是arr[i]和arr[arr.length-1-i]
public class var {
public static void main(String[] args) {
int[] arr={11,22,33,44,55,66};
for (int i=0;i<arr.length/2;i++){
int temp =arr[arr.length-1-i];
arr[arr.length-1-i]=arr[i];
arr[i]=temp;

}
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}

}
}

//逆序赋值法
public class var {
public static void main(String[] args){
int[] arr={11,22,33,44};
int [] arr_new=new int[arr.length];
for (int i=arr.length-1,x=0;i>=0;i--,x++){
arr_new[x]=arr[i];}
arr=arr_new;
for (int i=0;i<arr_new.length;i++){
System.out.print(arr_new[i]+"\t");
}
}
}

四.数组扩容
//数组扩容,缩减
public class var {
public static void main(String[] args){
int[] arr ={1,2,3};
int[] arr_new=new int[arr.length+1];
for(int i =0;i<arr.length;i++){
arr_new[i]=arr[i];}
//System.out.print(arr_new);
arr_new[arr_new.length-1]=4;
arr=arr_new;
for(int i =0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}

}
//动态数组扩容
public class var {
public static void main(String[] args){
Scanner myscanner =new Scanner(System.in);
int[] arr ={1,2,3};
do{int[] arr_new=new int[arr.length+1];
for(int i =0;i<arr.length;i++){
arr_new[i]=arr[i];}
System.out.println("请输入你要添加的元素");
int addNum=myscanner.nextInt();
arr_new[arr_new.length-1]=addNum;
arr=arr_new;
for(int i =0;i<arr.length;i++){
System.out.print(arr[i]+" ");}
System.out.println("请问是否还要继续添加 y/n");
char key=myscanner.next().charAt(0);
if (key=='n'){
break;
}

}while(true);
}

}

//动态数组缩减,每次缩减最后一个元素直到只剩下最后一个,系统提示无法缩减
public class var {
public static void main(String[] args){
Scanner myscanner =new Scanner(System.in);
int[] arr ={1,2,3,4};
do{int[] arr_new=new int[arr.length-1];
for(int i =0,x=0;i<arr.length-1;i++,x++){
arr_new[x]=arr[i];}
arr=arr_new;
for(int i =0;i<arr.length;i++){
System.out.print(arr[i]+" ");}
System.out.println("请问是否还要继续缩减 y/n");
char key=myscanner.next().charAt(0);
if (key=='n'){
break;
}else if (arr.length==1){
System.out.println("已经到最后一位,无法继续进行");
break;
}

}while(true);
}

}

五.排序

 

//使用冒泡排序法从小到大的数列
public class var {
public static void main(String[] args) {
int []arr= {3,2,8,4,7};//创建数组
int temp=0;
//循环实现冒泡排序
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}

}
}
for (int i =0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}

 六.查找

 
//使用冒泡排序法从小到大的数列
public class var {
public static void main(String[] args) {
String[] names = {"白眉鹰王", "金毛狮王", "紫衫龙王"};
int index = -1;
Scanner myscanner = new Scanner(System.in);
System.out.println("请输入名字");
String findName = myscanner.next();
for (int i = 0; i < names.length; i++) {
if (findName.equals(names[i])) {
index = i;
System.out.println("恭喜你找到" + findName);
System.out.println("findName的下标是" + index);
break;
}
}
if (index==-1){
System.out.println("你没有找到");
}
}
}

 


 

 















































posted @ 2022-10-24 15:43  书包里的跳蚤  阅读(98)  评论(0)    收藏  举报