java数组以及冒泡排序实现过程

数组:
1.什么是数组
程序:由人事先写好的,让电脑做的
程序=算法+数据结构
一个好的算法+数据结构=优秀的程序
算法:变量,运算符,分支,循环
数据结构:数组是一种最基本的数据结构   集合
数组可以理解为一个容器  水杯=容器    存储水
数组  容器   存储数据
数组只能存放具有相同数据类型的一堆数据
2.数组的定义
语法:数据类型【】 数组名/变量名=new 数据类型【大小】;
3.数组的初始化
4.数组的访问
5.数组的复制
6.数组的排序

package com.lddx.day1029;
//java中的数组
public class ArrayDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//数据类型[] 数组名/变量名=new  数据类型[大小];
		//10 20 30 40 50 60
		int[] arr1=new int[6];
		//定义了一个int类型的数组,数组的名字为arr1。数组的大小为6,可以在数组arr1中存储6个int类型的整数
		double[] arr2=new double[3];
		String[] arr3=new String[4];
		
		 
		
		
		
		
	}

}
package com.lddx.day1031;

import java.util.Arrays;

public class ArrayDemo1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1 数组的概念
		//2 数组的定义
		//3 数组的初始化
		//方式1:数组在创建之后没有具体的值,但是会有默认值这种方式称为动态初始化,和数组定义的语法一致
		int[] arr=new int[5];
		//arr数组创建完后,只有大小,没有具体值,但默认值为0;
		//arr  0 0 0 0 0
		double[] arr1=new double[5];
		//arr1 0.0 0.0 0.0 0.0 0.0 0.0
		boolean[] arr2=new boolean[5];
		//arr2 false false false false false
		String[] arr3=new String[5];
		//String类型为引用类型,默认值为null
		//arr3 null null null null null
		//总结:数组动态初始化后,数组中的元素内容是有默认值的
		//byte short int long char类型的数组,默认值是0
		//float double类型的数组,默认值是false
		//String类型的引用类型数组,默认值是null
		int[] a=new int[5];
		//方式2:静态初始化
		//可以在数组声明的同时对数组里的元素内容直接初始化
		int[] arr4={10,20,30,40,50};
		//既有大小,又有内容
		//声明的数组arr4的大小为5,元素内容为10 20 30 40 50
		char[] arr5={'a','b','c'};
		//声明数组arr5的大小为3,内容为‘a' ’b' ‘c'
		String[] arr6={"张三","李四"};
		//声明的数组arr6的大小为2,内容为“张三”  “李四”
	//	int[] arr7={7,'m',"张三",true};编译错误,{}里的内容要和数组的数据类型匹配
		//方式3:也属于静态初始化的方式
		//方式1+方式2的结合
		int[] arr8=new int[]{100,200,300};
		//数组arr8的大小为3,数组的内容为100 200 300
		//注意:一种错误的写法
		int[] arr9;//先声明一个数组,为arr9
		//arr9={10,20,30};//编译错误,java语法不允许这样写
		arr9=new int[3];//ok 数组arr9大小为3,内容为0 0 0
		arr9=new int[]{10,20,30};//ok 数组arr9的大小为3,内容为10 20 30
	//	int[] arr10=new int[];//编译错误;方式一动态初始化方式必须写大小
		//4关于数组的访问
		int[] arr11=new int[3];//0 0 0
		//通过length属性访问数组的大小,语法:数组名.length
		System.out.println(arr11.length);//3
		int[] arr12={10,20,30,40,50};//数组加内容
		System.out.println(arr12.length);//5
		//通过下标对数组进行访问和操作
		//数组下标的特点:从0开始,到length-1结束
		//语法:数组名【下标】
		System.out.println(arr11[0]);//0
		System.out.println(arr11[1]);//0
		System.out.println(arr11[2]);//0
		System.out.println(arr12[2]);//30
		//将数组arr12中的20替换为200
		arr12[1]=200;
		System.out.println(arr12[1]);//200
		//输出arr12数组中的最后一个元素
		System.out.println(arr12[arr12.length-1]);//50   软编码方式
		//System.out.println(arr12[5]);//运行错误
		//arr12数组的大小为5,下标是0-4.数组越界
		//将数组arr12中的所有元素内容输出
		System.out.println(arr12);//[I@c3c749
		//根据的是数组在内存中的地址值
		//根据数组下标输出
		for(int i=0;i<arr12.length;i++)
			System.out.println(arr12[i]);
	//	Arrays.toString()方法能够将数组里的东西输出System.out.println(Arrays.toString(arr12));
		//要求20和30交换位置,并输出交换后的内容
		int[] arr14={10,20,30,40,50};
		int m=0,n=0;
		for(int i=0;i<arr14.length;i++){
			if(arr14[i]==20)
				m=i;
			if(arr14[i]==30)
				n=i;
			}
		int x;
		x=arr14[m];
		arr14[m]=arr14[n];
		arr14[n]=x;
		for(int i=0;i<arr14.length;i++)
			System.out.println(arr14[i]);
		//关于数组的复制   通过自己写代码的方式完成数组的复制
		int[] arr15={10,20,30,40,50};
		//属于静态初始化的方式,大小为5,内容为10,20,30,40,50
		int[] arr16=new int[5];
		//arr16属于动态初始化的方式,大小为5,内容为 0 0 0 0 0
		System.out.println("复制前:"+Arrays.toString(arr16));
		//思路:从arr15中取出元素内容放入arr16数组中
		for(int i=0;i<arr15.length;i++)
			arr16[i]=arr15[i];
		System.out.println("复制后:"+Arrays.toString(arr16));
			//使用java中提供的一种方法完成数组的复制
		//System.out.println()
		//System.in
		//完成数组复制
		//system.arraycopy(src,srcPos,dest,destPos,length)
		/*
		 * src:源数组(要被复制的数组)
		 * srcPos:源数组的起始下标位置
		 * dest:目标数组
		 * destPos:目标数组的起始下标位置
		 * length:要复制的源数组的元素个数
		 */
		int[] arr17={2,5,7,9,11};//源数组
		int[] arr18=new int[5];//目标数组
		System.arraycopy(arr17, 1, arr18, 2, 3);
		//System.arraycopy(arr17, 0, arr18, 0, arr17.length);
		System.out.println("复制后:"+Arrays.toString(arr18));
		//练习:将源数组arr17中的579复制到目标数组arr19中的最后三个位置
		
	//使用Arrays。copyOf()方法完成数组的复制
		//语法:目标数组=Arrays.copyOf(源数组,目标数组的长度)
		int[] arr20={2,5,7,9,1};
		int[] arr21=Arrays.copyOf(arr20,5);
		System.out.println("目标数组:"+Arrays.toString(arr21));
		//如果目标数组的长度小于源数组的长度,会进行截取操作
		int[] arr22=Arrays.copyOf(arr20, 3);
		System.out.println(Arrays.toString(arr22));//生成的目标数组arr22大小为3,源数组后的9,1会舍掉
		//如果目标数组的长度大于源数组的长度,会进行填充   填充的内容:0 0.0 false null
		double[] arr23={10.3,3.14,20.5};
		double[] arr24=Arrays.copyOf(arr23, 6);
		System.out.println(Arrays.toString(arr24));
		boolean[] arr25={true,true,false,false,true};
		boolean[] arr26=Arrays.copyOf(arr25, 8);
		System.out.println(Arrays.toString(arr26));
		String[] arr27={"a","c","d"};
		String[] arr28=Arrays.copyOf(arr27,5);
		System.out.println(Arrays.toString(arr28));
    }

}
package com.lddx.day1031;

import java.util.Arrays;
import java.util.Random;

//冒泡排序算法
public class BulleSortDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//int[] arr={89,23,65,4};
		int[] arr=new int[1000000];
		Random r=new Random();
		for(int i=0;i<arr.length;i++)
			arr[i]=r.nextInt(10000);
		//i=0 1 2 3
		long t1=System.currentTimeMillis();
		for(int i=0;i<arr.length-1;i++){
		//每一轮2个数之间的比较
		/*
		 * i=0 j=0 1 2 3次比较
		 * i=1 j=0 1   2次比较
		 * i=3 j=0     1次比较
		 */
			for(int j=0;j<arr.length-1-i;j++)
				if(arr[j]>arr[j+1]){
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			
		}
		System.out.println(Arrays.toString(arr));
		long t2=System.currentTimeMillis();
		long t3=t2-t1;
		System.out.println(t3);
	
	}

}
package com.lddx.day1101;

import java.util.Arrays;
import java.util.Random;

//演示java中的排序
public class ArraySortDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//int[] arr={3,1,9,20,5};
		int[] arr=new int[1000000];
		Random r=new Random();
		for(int i=0;i<arr.length;i++)
			arr[i]=r.nextInt(10000);
		//i=0 1 2 3
		long t1=System.currentTimeMillis();
		//System.out.println("排序前:"+Arrays.toString(arr));
	/*
	 * Arrays.toString()
	 * Arrays.copyOf()
	 * 
	 */
		Arrays.sort(arr);
	//	System.out.println("排序后:"+Arrays.toString(arr));
		long t2=System.currentTimeMillis();
		long t3=t2-t1;
		System.out.println(t3);
	
	
	
	}

}
package com.lddx.day1101;

import java.util.Scanner;

public class 数组练习 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入班级人数:");
		int number=sc.nextInt();
		double[] socre=new double[number];
		String[] name=new String[number];
		for(int i=1;i<=number;i++){
			System.out.print("请输入第"+i+"位同学的姓名和成绩:");
			name[i-1]=sc.next();
			socre[i-1]=sc.nextDouble();
		}
		double max=0;
		double min=100;
		int a=0;
		int b=0;
		double sum=0.0;
		for(int i=1;i<=number;i++){
			if(max<socre[i-1]){
				max=socre[i-1];a=i-1;
			}
			if(min>socre[i-1]){
				min=socre[i-1];b=i-1;
			}
			sum+=socre[i-1];
		}
		System.out.println("总分:"+sum);
		System.out.println("平均分:"+sum/number);
		System.out.println("最高分:"+name[a]+"\t"+socre[a]);
		System.out.println("最低分:"+name[b]+"\t"+socre[b]);
		
		
		
		
		
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_25368751/article/details/83649997