算法入门-排序算法-冒泡排序-详解

2021-03-18  本文已影响0人  大象蹦蹦

一、核心思想

比较相邻两个元素,将这两个元素中较大的值往后移动

二、过程分析

从核心思想出发分析比较过程;

指针 j 从0位置开始遍历数组,遍历过程中比较 j 与 j+1 位置的元素值,并将较大值放在后面;

经过一次比较之后,不难发现:数组中的最后一个元素是最大值;而在下一轮比较中此值不需要参与;

接下来仅需要对新数组(原数组去掉最后一个元素)进行相邻位置元素两两比较即可;

每经历一轮相邻元素比较即可找出所有参与比较的元素中的最大值;

那么需要比较几轮?由于每轮会产生一个最大元素,所以需要比较 nums.length-1轮

指针 j 的边界:随比较的轮数而变,左边界不变(为0),右边界为 ( j<nums.length-1-轮数 )

相邻元素两两比较,指针 j 不需要达到最后一位,也不能达到最后一位,此条件决定了右边界的位置

三、代码


public void maopao(int nums[]){

        for(int i=0; i<nums.length-1; i++){ //需要比较的轮数

            for(int j=0; j<nums.length- 1-i ; j++){ //需要比较的元素范围逐步缩小

                if( nums[j] > nums[j+1] ){

                    int temp=nums[j+1];

                    nums[j+1]=nums[j];

                    nums[j]=temp;

                }

            }

        }

        System.out.println(Arrays.toString(nums));

    }

上一篇下一篇

猜你喜欢

热点阅读