Java数组与排序

Java数组与排序

数组

(1)概念

  • 一个引用数据类型
  • 用来保存多个相同的数据类型的数据
  • 内存中分配一块连续的内存空间
  • 一旦被定义,长度就不可更改
  • 定义数组时,一些数据类型会被默认为相应的值;
    • String => null;
    • int ,double => 0;
    • char => ‘/0’=>’’

(2)语法

  • 数据类型[ ] 数组名;
  • 数据类型 数组名[ ];
  • 数据类型[ ] 数组名 = new int[ 数组长度 ];
    • //看到new就代表在堆内存中分配空间

(3)数组方法

  • .length 求长度
  • System.out.print (Arrays.toString.array);打印数组

(4)数组的遍历

  • for(int i = 0; i < a.length; i++){
        System.out.print(a[i]);
    }System.out.println();
    
    //foreach   不能使用下标,专门用来遍历数组和集合
    for(int i : a){
        System.out.print(i);
    }

3.排序

1.冒泡排序

public static void main(String[] args){
    int[] a = new int[10];
    //调用Random类定义一个随机可以产生随机数的变量
    Random rd = new Random();
    
    System.out.println("数组中各元素为:")
    //遍历数组,给数组赋值,并打印数组各值;
        for(int i = 0; i < a.length; i++){
            //产生100以内的随机数给数组赋值
            a[i] = rd.nextInt(100);
            //打印数组
            System.out.print(a[i] + " ");
        }
    //换行
    System.out.println();
    
    //分析冒泡算法知道只用循环length-1次
    for(int i = 0; i < a.length - 1; i++){
        //内循环可把当前最大的数往后放,有序后不再参与排序
        for(int j = 0; j < a.length - i -1; j++)
            if(a[j] > a[j+1]){
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
    }
    //输出数组
    System.out.println(Arrays.toString.a);
    
}

2.选择排序

public static void main(String[] args) {

	// 定义一个数组
	int[] array = new int[10];
	Random rd = new Random();

	System.out.println("随机生成的数组是:");
	for (int i = 0; i < 10; i++){
		array[i] = rd.nextInt(100);
		//通过产生随机数赋值给数组
		System.out.print(array[i] + " ");
	}	//遍历数组,赋值且打印数组
	System.out.println();
	//排序并打印数组
	selectSort(array);
	for(int m : array){
		System.out.print(m + " ");
	}
}

public static void selectSort(int[] a) {
	//外循环控制循环次数,每次选择一个数,到最后只用选择倒数第二个数就可以让最后两个数有序
	for (int i = 0; i < a.length-1; i++){
		//定义一个下标,默认每次a[i]最小
		int index = i;
		//内循环找除a[i]之前最小的数
		for(int j = i;j < a.length-1; j++){
			if(a[index] > a[j+1]){
				index = j + 1;
			}
		}
		//将最找到的数与a[i]做交换
		int temp = a[index];
		a[index] = a[i];
		a[i] = temp;
	}		
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值