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("找不到");
}
以上为折半查找法,首先使用冒泡排序法对数列进行排序。