Java实现常见算法

排序

冒泡排序

冒泡排序的原理是每次比较相邻元素的大小,并且将大值交换到后面。
以下是代码实现。

// [3,9,1,45,8,13,2,5]
/*
    第一趟:
        第一次排序,3和9比较,不交换位置:  3*,9,1,45,8,13,2,5
        第二次排序,9和1比较,交换位置:    3,1*,9,45,8,13,2,5
        第三次排序,9和45比较,不交换位置: 3,1,9*,45,8,13,2,5
        第四次排序,45和8比较,交换位置:   3,1,9,8*,45,13,2,5
        第五次排序,45和13比较,交换位置:  3,1,9,8,13*,45,2,5
        第六次排序,45和2比较,交换位置:   3,1,9,8,13,2*,45,5
        第七次排序,45和5比较,交换位置:   3,1,9,8,13,2,5*,45
  ---------------------------------------------------
    第二趟:
        第一次排序,1和3比较,不交换位置:  1*,3,9,8,13,2,5,45
        第二次排序,3和9比较,不交换位置:  1,3*,9,8,13,2,5,45
        第三次排序,9和8比较,交换位置:    1,3,8*,9,13,2,5,45
        第四次排序,9和13比较,不交换位置: 1,3,8,9*,13,2,5,45
        第五次排序,13和2比较,交换位置:   1,3,8,9,2*,13,5,45
        第六次排序,13和5比较,交换位置:   1,3,8,9,2,5*,13,45
  ---------------------------------------------------
    第三趟:
        第一次排序,1和3比较,不交换位置:  1*,3,8,9,2,5,13,45
        第二次排序,3和8比较,不交换位置:  1,3*,8,9,2,5,13,45
        第三次排序,8和9比较,不交换位置:  1,3,8*,9,2,5,13,45
        第四次排序,9和2比较,交换位置:    1,3,8,2*,9,5,13,45
        第五次排序,9和5比较,交换位置:    1,3,8,2,5*,9,13,45
  ---------------------------------------------------
    第四趟:
        第一次排序,1和3比较,不交换位置:  1*,3,8,2,5,9,13,45
        第二次排序,3和8比较,不交换位置:  1,3*,8,2,5,9,13,45
        第三次排序,8和2比较,交换位置:    1,3,2*,8,5,9,13,45
        第四次排序,8和5比较,交换位置:    1,3,2,5*,8,9,13,45
 ---------------------------------------------------
    第五趟:
        第一次排序,1和3比较,不交换位置:  1*,3,2,5,8,9,13,45
        第二次排序,3和2比较,交换位置:    1,2*,3,5,8,9,13,45
        第三次排序,3和5比较,不交换位置:  1,2,3*,5,8,9,13,45
        第四次排序,5和8比较,不交换位置:  1,2,3,5*,8,9,13,45
 ---------------------------------------------------
    第六趟:
        第一次排序,1和2比较,不交换位置:  1*,2,3,5,8,9,13,45
        第二次排序,2和3比较,不交换位置:  1,2*,3,5,8,9,13,45
        第三次排序,3和5比较,不交换位置:  1,2,3*,5,8,9,13,45
 ---------------------------------------------------
    第七趟:
        第一次排序,1和2比较,不交换位置:  1*,2,3,5,8,9,13,45
        第二次排序,2和3比较,不交换位置:  1,2*,3,5,8,9,13,45
 */
private static void sort(int[] array) {

    //外层循环控制排序的趟数
    for(int i=0;i<array.length-1;i++){

        //内层循环控制每趟排序内的次数逐渐递减
        for(int j=0;j<array.length-1-i;j++){
            if(array[j]>array[j+1]){
                int tmp=array[j];
                array[j]=array[j+1];
                array[j+1]=tmp;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值