【算法】冒泡排序

一.冒泡排序

主要思想:

反复交换相邻的元素,使较大的元素 逐渐冒泡到数组的末尾,从而实现排序的效果

实现过程:

1.遍历待排序数组,比较相邻的元素,如果前面的元素比后面的元素大,

     就交换这两个元素的位置

2.重复上述操作,直至不再需要交换

3.返回排序后的结果

演示:(64    34    25   12    22    11     90)

第一躺:

64    34    25   12    22    11     90

34    64    25   12    22    11     90       (64>34  交换)   

34    25    64   12    22    11     90       ( 64>25  交换)

34    25    12   64    22    11     90       (64>12    交换)

34    25    12   22    64    11     90       (64>22    交换)

34    25    12   22    11    64     90       (64>11    交换)

34    25    12   22    11    64     90       (64<90   不交换)

第二趟:

34    25    12   22    11    64     90 

25    34    12   22    11    64     90  (34>25 交换)

25    12    34   22    11    64     90  (34>12 交换)

25    12    22   34    11    64     90  (34>22 交换)

25    12    22   11    34    64     90  (34>11 交换)

25    12   22    11     34    64     90 (34<64 不交换)

25    12   22    11     34    64     90  (64<90 不交换)

第三趟:

25    12   22    11     34    64     90 

12    25   22    11     34    64     90  (25>12 交换)

12    22   25    11     34    64     90 (25>22 交换)

12    22   11    25     34    64     90 (25>11 交换)

12    22   11    25     34    64     90 (25<34 不交换)

12    22   11    25     34    64     90(34<64 不交换)

12    22   11    25     34    64     90 (64<90 不交换)

第三趟:

12    22   11    25     34    64     90 

12    22   11    25     34    64     90 (12<22 不交换)

12   11    22    25     34    64     90 (22>11 交换)

12    11   22    25     34    64     90   (22<25 不交换)

12    11   22    25     34    64     90 (25<34 不交换)

12    11   22    25     34    64     90 (34<64 不交换)

12    11   22    25     34    64     90 (64<90 不交换)

第四趟:

12    11   22    25     34    64     90

11    12   22    25     34    64     90

总结:

冒泡排序的时间复杂度为O(n^2),是一种稳定的排序方法,在实际应用中可能效率低。

二. C语言版

#include<stdio.h>
#include<Windows.h>
void bubble_sort(int arr[] ,int n){
	int i ,j,temp;
	for(i=0;i<n-1;i++){
		for(j=0;j<n-1;j++){
			if(arr[j] > arr[j+1]){
				 temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
}
	int main(){
		int arr[] ={64,34,25,12,22,11,90};
		int n=sizeof(arr)/sizeof(arr[0]);
		bubble_sort(arr,n);
		printf("Sorted array:\n");
		for(int i=0;i<n;i++){
			printf("%d ",arr[i]);
		}
			system("pause"); 
		return 0;
		
		
	}

代码解析:

#include<stdio.h>
#include<Windows.h>
void bubble_sort(int arr[] ,int n){
//冒泡排序算法,参数为整数数组和数组大小
    int i ,j,temp;
//定义比较用的两个指针i和j
    for(i=0;i<n-1;i++){
//外层循环用于遍历所有元素
        for(j=0;j<n-i-1;j++){
//内层循环用于循环比较相邻元素,从头一个一直到后一个未归为的元素
            if(arr[j] > arr[j+1]){
//如果前面的数大于后面的数
                 temp=arr[j];
//交换他们的位置
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}
    int main(){
        int arr[] ={64,34,25,12,22,11,90};
//声明未排序的整数数组
        int n=sizeof(arr)/sizeof(arr[0]);
//通过数组长度计算元素数量
        bubble_sort(arr,n);
//调用冒泡排序算法
        printf("Sorted array:\n");
        for(int i=0;i<n;i++){
//循环遍历排序后的数组并打印出来
            printf("%d ",arr[i]);
        }
            system("pause"); 
        return 0;
        
        
    }

调试:

三.Java版

package BubbleSort;

public class BubbleSort {
    public static void main(String[] args) {
        int [] arr={64,34,25,12,22,11,90};
        bubbleSort(arr);
        for(int num:arr){
            System.out.println(num+"");
        }
    }

    private static void bubbleSort(int[] arr) {
        int temp;
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
}

调试:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/16827.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

07 Kubernetes 网络与服务管理

课件 Kubernetes Service是一个抽象层&#xff0c;用于定义一组Pod的访问方式和访问策略&#xff0c;其作用是将一组Pod封装成一个服务&#xff0c;提供一个稳定的虚拟IP地址和端口号&#xff0c;以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…

transformer and DETR

RNN 很难并行化处理 Transformer 1、Input向量x1-x4分别乘上矩阵W得到embedding向量a1-a4。 2、向量a1-a4分别乘上Wq、Wk、Wv得到不同的qi、ki、vi&#xff08;i{1,2,3,4}&#xff09;。 3、使用q1对每个k&#xff08;ki&#xff09;做attention得到a1,i&#xff08;i{1,2,3,4…

项目经理在项目中是什么角色?

有人说&#xff0c;项目经理就是一个求人的差事&#xff0c;你是在求人帮你做事。 有人说&#xff0c;项目经理就是一个与人扯皮的差事&#xff0c;你要不断的与开发、产品、测试等之间沟通、协调。 确实&#xff0c;在做项目的时候&#xff0c;有的人是为了完成功能&#x…

( 数组和矩阵) 769. 最多能完成排序的块 ——【Leetcode每日一题】

❓769. 最多能完成排序的块 难度&#xff1a;中等 给定一个长度为 n 的整数数组 arr &#xff0c;它表示在 [0, n - 1] 范围内的整数的排列。 我们将 arr 分割成若干 块 (即分区)&#xff0c;并对每个块单独排序。将它们连接起来后&#xff0c;使得连接的结果和按升序排序后…

1. 先从云计算讲起

本章讲解知识点 什么是云计算&#xff1f; 为什么要用云计算&#xff1f; 物理服务器与云服务器对比 云计算服务类型 云计算部署类型 1. 什么是云计算&#xff1f; 云计算是一种通过计算机网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式。按照服务层次分为IaaS、…

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

随着更多的公链底层面向市场&#xff0c;通过参与早期测试在主网上线后获得激励成为了行业的一个热点话题&#xff0c;在 Apots、Arbitrum One、Optimism等陆续发放了测试空投后&#xff0c;以 Layer3为主要特性的 Nautilus Chain 也在前不久明确表示将会有空投&#xff0c;引发…

ESP8266_RTOS_SDK之SPIFFS

需要在ESP8266的FLASH中存储一些可变参数&#xff0c;有两种方式&#xff0c;一种是调用SPI Flash API直接指定地址读写FLASH&#xff1b;二是在SPI FLASH上创建一块SPIFFS 分区&#xff0c;以读写文件的形式存取数据。 下面记录第二种方式&#xff0c;使用SPIFFS文件系统存取…

【Unity入门】20.三维向量

【Unity入门】三维向量 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;空间向量 &#xff08;1&#xff09;什么是三维向量 为什么会有这么一篇博客呢&#xff1f;主要是三维向量在unity中…

数据库之事务隔离级别详解

事务隔离级别详解 一、事务的四大特性&#xff08;ACID&#xff09;1. 原子性(atomicity)&#xff1a;2. 一致性(consistency)&#xff1a;3. 隔离性(isolation)&#xff1a;4. 持久性(durability)&#xff1a; 二、事务的四种隔离级别1. 读未提交(Read uncommitted)&#xff1…

吧佬联手抵制奸商,百元级游戏电脑横出江湖

最近小忆闲得在电商平台搜索了下关键词「游戏主机」&#xff0c;不出意外销量榜前列清一色全是「i9 级高端游戏主机」。 这些主机不论配置单介绍还是十万百万级销量宣传标语&#xff0c;都给人一种血赚不亏的「豪华」感。 咱就说时代在变&#xff0c;唯一不变的是奸商们的套路与…

指针函数和函数指针

本文目录 • 前言 • 一、返回指针的函数 二、指向函数的指针回到顶部 一、返回指针的函数 指针也是C语言中的一种数据类型&#xff0c;因此一个函数的返回值肯定可以是指针类型的。 返回指针的函数的一般形式为&#xff1a;类型名 * 函数名(参数列表) 比如下面这个函数&#…

「Codeforces」771-div2 E. Colorful Operations

E. Colorful Operations https://codeforces.com/contest/1638/problem/E 题目描述 给你一个数组&#xff0c;默认初始元素为 0 &#xff0c;颜色为 1&#xff0c;有三种操作&#xff1a; Color l r c&#xff1a;将 [l, r] 区间内的颜色修改为 cAdd c x&#xff1a;将所有颜…

SpringBoot整合Minio,一篇带你入门使用Minio

本文介绍SpringBoot如何整合Minio&#xff0c;解决文件存储问题 文章目录 前言环境搭建项目环境搭建添加依赖库yml配置 Docker安装minio 代码实现MiniConfigservicecontroller 测试 前言 参考链接&#xff1a; 官网 环境搭建 项目环境搭建 将minio单独封装成一个module&am…

LeetCode单链表OJ题目做题思路分享

目录 移除链表元素链表的中间节点链表中倒数第K个节点合并两个有序链表 移除链表元素 链接: link 题目描述&#xff1a; 思路分享&#xff1a; 我们上个博客分享了第一种方法&#xff0c;下面我们分析第二种方法&#xff1a;思路就是将每一个不等于我们要删除的值的节点依次尾…

如何快速获取已发表学术论文的期刊封面及目录(caj格式下载和caj转pdf)

目录 1 下载caj格式的封面和目录 2 CAJ格式的封面和目录转PDF格式 在进行职称评审或成果申报时&#xff0c;一般要求提交你发表的成果所在的期刊的当期封面和目录。本文就手把手带带你制作一个期刊目录。 重要提示&#xff1a;下载期刊封面和目录需要你有知网账号&#xff0…

Java读取Properties配置文件的6种方式

Java读取Properties的方式 项目结构&#xff1a;经典的maven项目结构 配置文件1和2内容一致&#xff1a; jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urlmysql://localhost:3306/database?useUnicodetrue&characterEncodingutf-8&serverTimezoneAsia/Shanghai jdbc.…

【深度学习】计算机视觉(13)——模型评价及结果记录

1 Tensorboard怎么解读&#xff1f; 因为意识到tensorboard的使用远不止画个图放个图片那么简单&#xff0c;所以这里总结一些关键知识的笔记。由于时间问题&#xff0c;我先学习目前使用最多的功能&#xff0c;大部分源码都包含summary的具体使用&#xff0c;基本不需要自己修…

找高清无水印视频素材,就上这9个网站。

推荐几个我的视频素材库&#xff0c;有免费、收费、商用&#xff0c;希望对大家有帮助&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有上千个&#xff0c;全部都很高清&…

unityt光线透射目标

介绍 在Unity中&#xff0c;光线透射目标通常指的是在场景中放置的一些物体&#xff0c;用于模拟光线从一个物体透过到另一个物体的效果。canvas子物体组件中&#xff0c;勾不勾选“光线透射目标”有什么区别&#xff1f; 方法 在Canvas子物体组件中勾选“光线透射目标”时&…

Python基础合集 练习17(类与对象)

class Dog: pass papiDog() print(papi) print(type(papi)) 构建方法 创建类过后可以定义一个特殊的方法。在python中构建方法是__init__(),init()必须包含一个self参数 class pig(): #def__init__(self) -> None&#xff1a; print(‘你好’) pipgpig() 属性和方法 cl…