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

一、核心思想

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

二、过程分析

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

指针 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));

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容