简单排序 --- 冒泡排序算法 (常见经典排序算法)

简介: 简单排序 --- 冒泡排序算法 (常见经典排序算法)

基本思路:

一个数组中重复遍历数组,两两相邻元素依次进行比较,如果前一个元素大于后一个元素,就交换位置,直到数组元素由小到大排序。

编程步骤:

用嵌套循环进行排序,外层循环设置一个 flag=true 进行判断数组是否排序完成,内层循环将数组中两两相邻元素进行比较并交换位置,然后在外层循环判断数组是否排序完成,未排序完成 flag=false,排序完成 flag=true 并退出循环完成排序;

平均时间复制度:image.png


image.png

import java.util.Arrays;
//测试冒泡排序
public class BubbleSortTest {
    public static void main(String[] args) {
        int[] values = {3,1,4,6,22,0,33,2,745,5,56,8};
        System.out.println("values数组原始顺序:"+Arrays.toString(values));
        bubbleSort(values);
    }
    public static void bubbleSort(int[] values){
//把冒泡排序的方法设置成static静态的,不允许改变代码;
        int temp;
        for(int i=0;i<values.length;i++){//这里的values.length表示需要循环的次数
            //定义一个布尔类型的变量,标记数组是否已到达有序状态;
            boolean flag = true;
            //内循环,每一趟循环都从数列的前两个元素开始进行比较,比较到无序数组的最后;
            for (int j=0; j<values.length-1-i;j++){//这里的values.length-1-i是因为外层循环每进行一趟,数组末尾就排序好一个元素,就不需要再多一次比较。
                //如果前一个元素大于后一个元素,则交换两元素的值;
                if (values[j] > values[j+1]){
                    temp = values[j];
                    values[j] = values[j+1];
                    values[j+1] = temp;
                    //本趟发生了交换,表明该数组在本趟处于无序状态,需要继续比较;
                    flag = false;
                }
            }
            //根据标记量的值判断数组是否有序,如果有序,则退出,无序,则继续循环;
            if (flag){
                break;
            }
            System.out.println((i+1)+"趟排序:"+ Arrays.toString(values));
        }
    }
}
相关文章
|
3月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
205 5
|
3月前
|
机器学习/深度学习 运维 算法
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
253 0
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
|
3月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
163 0
|
3月前
|
机器学习/深度学习 算法 安全
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)
112 0
|
3月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
173 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
3月前
|
供应链 算法 Java
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
134 1
|
3月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
102 0
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
219 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
170 2
|
3月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
209 3

热门文章

最新文章