数组的学习及其练习

 1.声明并开辟一个数组。

元素类型[] 数组名=new 元素类型[元素个数或数组长度];

int[] arr=new int[5];

初始化操作。arr[0]=10;

2.静态初始化数组。

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};

 3.数组的操作方式。

int a=100;
int[] arr1={a,2,6,7,9,4};
int[] arr2=new int[]{a,2,6,7,9,4};
int[] arr3=arr1;
System.out.println(arr);
//输出默认格式为:元素数据类型@数据的hash地址值。类似的还有md5、sha-1、sha-256等消息摘
要算法
for(int i=0;i<arr1.length;i++)
System.out.println(arr1[i]);
System.out.println(Arrays.toString(arr1));

 4.创建一个长度为6的整数数组,数组中有六个整数(直接赋值或者键盘录入)。遍历数组中的每个元 素,元素之间用空格隔开

public class Test4 {
public static void main(String[] args) {
int[] arr = new int[6];
//int[] arr=new int[]{0,0,0,0,0,0};
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
sc.close();
}


 5.创建一个长度为6的整数数组。请编写代码,随机生成六个0-100之间的整数存放到数组中,然后再 计算出数组中元素的和并打印

public class Test5 {
public static void main(String[] args) {
int[] arr=new int[6];
for(int i=0;i<arr.length;i++) {
double d1 = Math.random() * 101;
arr[i]=(int)d1;
}
int sum=0;
for(int i=0;i<arr.length;i++)
sum+=arr[i];
String ss="";
for(int i=0;i<arr.length;i++) {
ss+=arr[i]+"+";
}
ss=ss.substring(0,ss.length()-1)+"="+sum;
System.out.println(ss);
}
}

 6.定义一个数组来存储10个学生的成绩{72,89,65,87,91,82,71,93,76,68},计算并输出学生的平均成绩

public class Test6 {
public static void main(String[] args) {
int[] arr = { 72, 89, 65, 87, 91, 82, 71, 93, 76, 68 };
int sum=0;
for(int i=0;i<arr.length;i++) {
sum+=arr[i];
}
int avg=sum/arr.length;
System.out.println("平均成绩"+avg);
}
}

 7.有一个数组,其中有十个元素从小到大依次排列 {12,14,23,45,66,68,70,77,90,91}。再通过键盘录入 一个整数数字。要求:把数字放入数组序列中,生成一个新的数组,并且数组的元素依旧是从小到大排 列的。

//请输入一个整数数字: 50
//生成的新数组是:12 14 23 45 50 66 68 70 77 90
public class Test7 {//操作成功的前提是数组中的数据有序
public static void main(String[] args) {
int[] old = { 12, 14, 23, 45, 66, 68, 70, 77, 90, 91 };
int kk = 10;
int[] newArray = new int[old.length + 1];
boolean bb = true;
for (int i = 0; i < old.length; i++) {
if (old[i] < kk)
newArray[i] = old[i];
else {
if (bb) {
newArray[i] = kk;
bb = false;
}
newArray[i + 1] = old[i];
}
}
if(bb)
newArray[old.length]=kk;
for(int i=0;i<newArray.length;i++)
System.out.print(newArray[i]+"\t");
}
}

 8.定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右 边。(可以创建其他数组,不必须在原数组中改变)

public class Test8 {
//定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右
边。
public static void main(String[] args) {
int[] arr=new int[] {1,2,7,10,13};
int[] brr=new int[arr.length];
int k=0;
int m=arr.length-1;
for(int i=0;i<arr.length;i++) {
if(arr[i]%2!=0) {
brr[k]=arr[i];
k++;
}else {
brr[m]=arr[i];
m--;
}
}
for(int i=0;i<brr.length;i++)
System.out.print(brr[i]+"\t");
}
}
public static void main(String[] args) {
		double s1=System.currentTimeMillis();
		double[] arr= {12.9,53.54,75.0,99.2};
		for(int k=1;k<arr.length;k++) {           //控制循环次数
			for(int i=0;i<arr.length-k;i++) {     //相邻比较
				if(arr[i]>arr[i+1]) {
					double tmp=arr[i];   
					arr[i]=arr[i+1];              //调换位置				
					arr[i+1]=tmp;
				}
			}
			}
		double e1=System.currentTimeMillis();
		System.out.println("排序时间为"+(e1-s1)+"ms");
		for(double tmp:arr){
			System.out.print(tmp+"\t");
		}
	}

以上为冒泡排序法,首先进行循环次数的控制,然后对数列内相邻的数经行比较,调换位置。

public static void main(String[] args) {
		double s1=System.currentTimeMillis();
		 int[] arr = new int[21];
		    for (int i = 1; i < arr.length; i++) {
		      int r = (int) (Math.random() * 100);
		      arr[i] = r;
		    }
		    arr[0] = 33;
		    for (int i = 1; i < arr.length; i++) {
		      for (int k = 0; k < arr.length - i; k++) {
		        if (arr[k] > arr[k + 1]) {
		          int tmp = arr[k];
		          arr[k] = arr[k + 1];
		          arr[k + 1] = tmp;
		        }
		      }
		    }
		    
		    for(int tmp:arr)
		      System.out.print(tmp+"  ");
		    System.out.println();
		    
		    int target = 33;
		    int pos=-1;
		    int m1 = 0;
		    int m2 = arr.length - 1;
		    boolean flag=false;

		    while (m1 <= m2) {
		      pos = (m1 + m2) / 2;
		      if (arr[pos] > target) {
		        m2 = pos - 1;
		      } else if (arr[pos] < target) {
		        m1 = pos + 1;
		      } else {
		        flag=true;
		        break;
		      }
		    }
		    double e1=System.currentTimeMillis();
			System.out.println("排序时间为"+(e1-s1)+"ms");
		    if(flag)
		      System.out.println(pos+"::"+arr[pos]);
		    else
		      System.out.println("找不到");
		  }
		

以上为折半查找法,首先使用冒泡排序法对数列进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值