排序算法-冒泡排序

排序算法:冒泡排序 前言 对于Java程序员来说,一般对于算法没有什么要求,但是有一个算法除外——排序算法。排序算法不仅在日常开发中经常用到,还是面试中几乎必问的题目,并且通常是以“手写代码”的形式出现,因此掌握好排序算法是对每一个程序员的最基本要求。 谈到排序算法,第一个浮现在我们脑中的一定是“冒泡排序”。“冒泡排序”由于较简单的过程,得到大多数程序员的“厚爱”,本文将简单的介绍排序算法的整个过程。 ... 阅读详情

今天是国庆上班回来的第一天,心还没办法收敛,还是想着玩,哈哈。完全不在状态,感觉一天效率极差,需要静下心去做点事。无意中看到别人的一篇博客,于是突发奇想,不如写写数据结构的知识吧,虽然日常见到这类博客很多,觉得没太大的新鲜味道。为了静下心来,同时当复习多年前学习过且日常离不开的知识,后面每天一练。加油!!!

现在复习的第一篇是冒泡排序算法,算法原理比较简单,见度娘的解释:

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

直接上代码,使用的是C++实现,在交换值时是两种不同的思路:

#include <iostream>

using namespace std;

//冒泡排序算法1
int BubbleSort_1(int *data, int sizeOfData)
{
	for (int i = 0; i < sizeOfData; i++) {
		for (int x = i+1; x > 0 && x < sizeOfData; x--)
		{
			//若前面大于后面,则进行交换,直接将最段最小的值一直交换到最前面去
			if (data[x] < data[x-1])
			{
				int tmp = data[x];
				data[x] = data[x-1];
				data[x-1] = tmp;
			}
			else
			{
				break;
			}
		}
	}
	return 0;
}

//冒泡排序算法2
int BubbleSort_2(int* data, int sizeOfData)
{
	for (int i = 0; i < sizeOfData-1; i++) {
		for (int x = 0; x< sizeOfData-i-1; x++)
		{
			//若前面大于后面,则进行交换
			if (data[x] > data[x + 1])
			{
				int tmp = data[x];
				data[x] = data[x + 1];
				data[x + 1] = tmp;
			}
		}
	}
	return 0;
}

int main()
{
	int data[] = { 8,7,9,3,5,4,1,-2,18,10,-3 };
	int sizeOfData = 11;
	//BubbleSort_1(data, sizeOfData);
	BubbleSort_2(data, sizeOfData);
	for (int i = 0; i < sizeOfData; i++) {
		cout << data[i] << endl;
	}
}
-3
-2
1
3
4
5
7
8
9
10
18

两种方法都测试过,都能正确排序,并没有大数据测试过,但从分析角度看,第一种方法相对高效一些。

排序算法-常用的排序算法冒泡排序优化 排序算法 冒泡排序优化 阅读详情

相关推荐

python实现排序算法——冒泡排序

       使用python实现冒泡排序算法,冒泡排序法是非常经典并且非常简单有效的排序算法。首先我们介绍一下冒泡排序算法。 算法步骤: Step 1: 比较第一个数和第二个数,如果第一个数比第二个数大,那么就调换两个数的位置。 Step 2: 按照step 1中的做法,依次比较序列中所有相邻的两个数。此时,序列中最大的数已经“沉”到了最后面。 Step...

海军上将光之翼的博客 1268

汇编实现冒泡排序

今天写了一下汇编实现冒泡的代码,映像最深的是:汇编本身是没有结构的,如果非要说有,那么也是顺序结构,那么如何实现循环和选择结构呢,这就要设置标志了,可以说设置标志是汇编学习的核心,那么要熟练设置标志就要掌握算数标志位的变化和跳转指令的对应关系,下面是我的代码: DATAS SEGMENT     NUM db 10,9,8,7,6,5,4,3,2,1;此处输入数据段代码  DATAS EN

小小小小杜 2574

汇编语言程序代码冒泡排序

汇编语言程序代码20个带符号数最大,最小,平均值问题

冒泡排序

算法思想 比较两个相邻的元素,将值大的元素交换到右边。因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。 实现思路 1、首先比较第一和第二个数,将小数放在前面,将大数放在后面。 2、比较第2和第3个数,将小数放在前面,大数放在后面。 … 3、依次从开始第一对到结尾的最后一对比较相邻的元素。如果第一个比第二个大,就交换他们两个。最后的元素应该会是最大的数。 4、然后进行第二轮比较,在第二轮比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的..

weixin_40017062的博客 688

用汇编语言实现冒泡排序算法

汇编语言编写的冒泡排序程序代码,从小到大排序,并以十进制字符串的形式输出排序结果。

汇编冒泡排序实验报告.docx

汇编冒泡排序实验报告.docx

RISC-V编程——冒泡排序

RISC-V编程——冒泡排序 刚接触RISCV指令集架构。下面是参考计算机组成与设计riscv版这本书写下的汇编代码。 模拟器为rars 1.5版本。RV32 #冒泡排序 #两个循环达成 #v,n保存在a0和a1中。i,j保存在s3和s4中。s5和s6用于复制保存v,n。 #t0,t1,t2做临时寄存器 .data v: .word 12,13,6,9,1,4,3,10,8 .text sort: addi sp,sp,-20 sw ra,16(sp)

weixin_44126785的博客 6686

MIPS指令实现冒泡排序法

系统结构实验 体系机构实验 交大同学的福音哦 mips算法 根据老师的要求在软件上运行没有问题哦~ 后面还有c++程序

14--4冒泡排序

/* *程序的版权和版本声明部分: *Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称: *作者:纪丽娜 *完成日期:2013年 12月一号 *版本号:v1.0 *对任务及求解方法的描述部分: *输入描述: 无 *问题描述:从文件读入若干个数,进行排序 *程序输出:排序后的若干个数 *问题分析:冒泡法 *算法

u012369599的专栏 724

7大排序算法实现程序(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)

7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码

【Blockly开发教程】01 初识Blockly

Blockly 是由 Google 开发的开源代码库,它可以为网页程序和移动端应用程序添加可视化代码编辑器。

Bright的博客 4512

Python排序算法之冒泡排序

冒泡排序是一种简单直观的排序算法;它重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复的进行直到不再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经过交换慢慢“浮”到数列的顶端。比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。

程序员小芽的博客 8659

巨详细Java JDK环境配置(Mac 版)

本篇最详细保姆级教程Mac OS上安装JDK以及配置环境细化每个步骤过程认真看完。

EverythingDone的博客 1万+

排序算法之冒泡排序

冒泡排序法作为最基础的排序算法之一,为我们理解和学习其他排序算法奠定了基础。通过深入理解冒泡排序法的原理、掌握实现方法以及了解优化技巧,我们可以更好地应用它,并能够更好地理解其他高级排序算法。尽管冒泡排序法在实际应用中的效率有限,但通过对排序算法的学习和探索,我们能够发现更多高效的算法。今天的分享就到这里啦~

qq_64928278的博客 3686

逆向实战:拼多多anti-content加密参数的全链路解析与动态对抗策略

本文深入解析了拼多多anti-content加密参数的全链路生成逻辑与动态对抗策略。通过逆向工程实战,详细拆解了包含设备指纹、用户行为采集和动态密钥生成在内的12个关键环节,并提供了可持续对抗的精准模拟方案和自动化更新机制,帮助开发者有效应对拼多多的反爬体系。

weixin_30687051的博客 160

Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)

Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)

weixin_37584728的博客 2637

【排序算法】冒泡排序

冒泡排序是一种简单但低效的排序算法。它重复地走访要排序的元素列,一次比较两个元素,如果它们的顺序错误就交换它们,直到没有元素需要交换。这个过程类似于气泡在水中上浮的过程,因而得名冒泡排序。冒泡排序的实现非常简单,但效率较低,特别是在大型数据集上。它的时间复杂度为O(n^2),其中n是要排序的元素个数。尽管如此,在某些特定情况下,冒泡排序仍然是一种简单且有效的选择。下面我将详细介绍冒泡排序的原理、实现以及一个Java语言的示例。冒泡排序是一种简单直观的排序算法,但其时间复杂度较高,特别是在数据量较大时。

lmj3732018的博客 4945

【Zephyr驱动专题】01_深扒MPU6050陀螺仪寄存器

MPU6050作为最常用的6轴运动跟踪器件,其寄存器配置直接影响传感器性能和功能实现。本文将深入解析关键寄存器,并使用逻辑分析仪抓取信号进行分析。

zero的博客 1571

排序算法之一 冒泡排序(Bubble Sort)

概述 冒泡排序是一种极其简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。尽管冒泡排序是最容易了解和实现的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的。 算法描述 1.比较相邻的元素,如果前一个比后一个大,就把它们两个对调...

Markus 2599

Android 系统低内存lowmemorykiller关于阈值修改 minfreeAbsKbytes优化

在系统rom定制化开发中,在对于运行内存ram 1G和2G的设备中,对于内存使用高峰期时,minfreeAbsKbytes优化很关键 调整合理的minfree,让内存合理的使用很关键,接下来分析相关功能的实现

安卓兼职framework和app工程师的博客 524

PyCharm 怎么不升级直接使用Jupyter Notebook

在PyCharm 中需要升级到 PyCharm Professional 版本,才能直接使用 Jupyter Notebook。从截图来看,Jupyter Notebook 已经成功启动,并且正在运行。这将在默认网络浏览器中打开一个新的标签页,显示文件浏览器界面。可以在这里创建和编辑。文件添加到 PyCharm 项目中,并使用纯文本编辑功能进行修改。支持与外部工具集成,可以配置它以调用命令行工具或脚本来启动。,参数可以根据需要设置,工作目录设置为项目根目录。,你仍然可以在本地环境中安装和运行。

Davina_yu的博客 994
上一篇: hadoop集群环境动态增加datanode
下一篇: 排序算法-插入排序
&捕风的汉子&
博客等级 码龄17年 27粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值