java数组的排序算法笔记

本文详细介绍了两种经典的排序算法——冒泡排序和选择排序。包括两种算法的基本思想、优化方式及其实现代码。冒泡排序通过多次遍历将数组中的元素逐步按顺序排列;而选择排序则是每次找到未排序部分的最小值,并将其与当前起始位置的元素交换。
摘要由CSDN通过智能技术生成

1、冒泡排序:

思想:分成(arrs.length-1)轮。每一轮都从前两个开始比较并判断大小,如果按升序排列则第一个数大于第二个数时换位置,往后一次比对第二个数和第三个数.......

a、简单冒泡排序:

public static void bubbleSort2(int [] arrs) {
    for(int i = 0;i < arrs.length-1;i++) {
	for(int j = 0;j < arrs.length-1;j++) {
            if(arrs[j]<arrs[j+1]) {
		int mid = arrs[j];
		arrs[j] = arrs[j+1];
		arrs[j+1] = mid;
	    }
	}
    }
}

b、考虑到每次最后一个数已经是最大的情况后,外层循环执行到第几次,内层循环减少外层循环的次数(第一次按0计算)。

public static void bubbleSort2(int [] arrs) {
    for(int i = 0;i < arrs.length-1;i++) {
	boolean b = true;
	for(int j = 0;j < arrs.length-1-i;j++) {  //每次执行完一趟最后的数都时最大的,所以每次都较少执行次数
	    if(arrs[j] > arrs[j+1]) {
	        int mid = arrs[j];
		arrs[j] = arrs[j+1];
		arrs[j+1] = mid;
		b = false;                        //每次有两个元素置换位置后,b的值为false
	    }
	 }
	if(b) {                                   //判定如果一趟执行完成后,没有任何两个元素置换位置,则判定数组排序已完成
	    return;
	}
    }
}

2、选择排序:

思想:分内外双层循环,每一趟排序都拿出最前端的数和后面的数依次相比,每碰到比次数小(大)的都记录一次索引值,知道最后一次比较,确定所有数中最小(大)的数,和最前端的数互换位置。

public static void selectedSort2(int [] arrs) {
    for(int i = 0;i < arrs.length-1;i++) {
        int index = i;
        for(int j = i+1;j < arrs.length;j++) {
            if(arrs[index]>arrs[j]) {
                index = j;
            }
        }
        if(index != i) {
            int mid = arrs[i];
            arrs[i] = arrs[index];
            arrs[index] = mid;
        }
    }
}
学习记录,未完待续。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值