冒泡排序、插入排序、选择排序

冒泡排序详解(附有Java详细代码) 冒泡排序是一种简单直观的排序算法,它通过相邻元素之间的比较和交换来实现排序。虽然它在效率上不如其他排序算法,但在某些特定场景下仍然有其应用价值。在实际应用中,我们应该根据具体需求和数据特点选择合适的排序算法。同时,我们也可以通过一些优化策略来提高冒泡排序的效率,如标记交换和鸡尾酒排序等。 阅读详情

排序

冒泡排序

冒泡排序是一种比较简单的排序算法,这种算法是让越小或者越大的元素经由交换慢慢“浮”到数列的顶端,就像水里面的泡泡向上浮动一样,所以叫“冒泡排序”。 冒泡排序算法的原理如下:

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

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

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

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

代码表现

var arr = [4,6,3,2,7,9,11,1];
var length = arr.length;
var temp; 

for(var i = 0; i < length; i++) {
    for(var j = 0; j< length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}

选择排序

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

代码表现

var arr = [4,6,3,2,7,9,11,1];
var length = arr.length;
var minIndex, temp; 
for (var i = 0; i < length - 1; i++) {
    minIndex = i;
    for (var j = i + 1; j < length; j++) {
      if (arr[j] < arr[minIndex]) { 
          minIndex = j; 
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
}

插入排序

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

代码表现

var arr = [4,6,3,2,7,9,11,1];
var length = arr.length;
for (var i = 1; i < length; i++) {
    var key = arr[i], j = i - 1;
    while (arr[j] > key) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = key;
  }
Java中的冒泡排序---傻瓜版 冒泡排序(BubbleSort),顾名思义,由于整个排序的过程重复和的操作,就好像水中气泡上浮的状态,故得名。冒泡排序的整个过程分为多轮,每轮又分为多次(轮次数由需要排序的元素个数决定),以升序为例,每一轮冒泡都是从第1个元素开始,依次比较1&2,2&3,3&4,4&5……如果在比较的过程中发现前一个元素大于后一个元素,则将二者位置调换,因此可以实现这样经过多轮冒泡,就能保证所有元素的顺序排列。 阅读详情

相关推荐

Numpy|创建数组的多种方法

本文是该专栏的第17篇,后面会持续分享python的数据分析知识,记得关注。使用numpy创建数组的方法有很多,你知道的有哪些呢?笔者下面将几种创建数组的方法进行了统一整理,废话不多说,直接往下一起探讨吧!

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 2021

Java 与排序算法(1):冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过不断交换相邻两个元素的位置,使得较大的元素逐渐往后移动,直到最后一个元素为止。冒泡排序的时间复杂度为On2,空间复杂度为O1,是一种稳定的排序算法。

暗星涌动 1万+

STM32以太网通信-STM32以太网外设(ETH)

通过 DMA 控制器进行介质访问控制 (MAC) STM32F4xx系列控制器内部集成了一个以太网外设,它实际上是一个通过DMA控制器进行介质访问控制(MAC),它的功能就是实现MAC 层的任务。 借助以太网外设,STM32F4xx 控制器可以通过ETH 外设按照IEEE 802.3-2002 标准发送和接收MAC 数据包。 ETH 内部自带专用的DMA 控制器用于MAC,ETH 支持两个工业标准接口介质独立接口(MII)和简化介质独立接口(RMII)用于与外部PHY 芯片连接。MII 和RMII 接口用于

暖暖_的_纠结的博客 2万+

【Java】冒泡排序

冒泡排序详解。

zcxyywd的博客 1万+

osgearth2.10 demo功能介绍

osgearth-2.10 demo: 说明: 1、运行环境win7 x64 旗舰版,CPU i5-6400 8核,8G内存; 2、括号内是对应demo的测试参数(.earth); 3、配置OSG_FILE_PATH; 4、参数命令行可以查看各个demo需要的输入参数; 5、前缀说明:gui界面程序、cmd控制台程序、non功能未知; 6、程序后括号里的non表示不需要通过命令行输入参数; 示例: 1、gui:osgearth_3pv(simple.earth):相机与地球的投影关系,Range表示相机

rach09的专栏 2422

电流互感器的使用分析

有关电流互感器使用的注意事项,回头再看,耳目一新。

qq_46757048的博客 2万+

简单排序——选择排序、冒泡排序、插入排序

本文利用示例和图示的方法详细阐述了简单排序(选择排序、冒泡排序、插入排序)的算法原理和过程,并给出对应的代码供读者参考。

weixin_65472178的博客 7070

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

(一)冒泡排序、选择排序、插入排序

最近在看数据结构与算法分析,想写个笔记记录一下,先从基本的冒泡、选择、插入开始吧。 注:都是以增序为例说明 一、冒泡排序        1、原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,止到数组结束;

hijiankang的专栏 5万+

FreeRTOS项目:智能手表(1);

从 “最底层启动”→“系统基础配置”→“硬件驱动”→“中间件能力封装”→“上层业务功能”,分层递进、从基础到应用,就能逐步把整个项目的逻辑串联起来~

weixin_46847454的博客 1447

【Go语言实战】(3) Gin + Gorm 简单备忘录 | 含接口文档

Go语言实战:TodoList 备忘录

面向生活编程 6140

三大基础排序 -选择排序、冒泡排序、插入排序

介绍了冒泡排序、插入排序、选择排序的思想、流程,和代码

hi,这里是Ying_526_,欢迎关注 1万+

构建AI Agent驱动的智能健康管理系统

数据碎片化:健康数据分散在不同的设备和平台中,难以统一管理和分析。个性化不足:健康管理方案通常是通用的,难以根据个人的健康状况实时调整。用户参与度低:用户难以获得及时、个性化的健康建议,导致健康管理效果不佳。AI Agent是一个能够感知环境、采取行动以实现目标的智能实体。根据智能体的智能水平,可以分为简单反应式智能体和复杂适应式智能体。实时监测健康数据。获取个性化的健康建议。收到健康风险预警。

AI天才研究院 749

冒泡排序、选择排序、插入排序

排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。这个排序算法很多,初学者需要学习掌握冒泡排序、选择排序、插入排序这三种,简单易懂,容易学习。下面就以数组为例,说一下冒泡排序、选择排序、插入排序。..................

qq_56501283的博客 948

高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)

博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...

认真努力,做一只会飞的毛毛虫。 5547

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

冒泡排序、选择排序、插入排序总结

排序(sort)就是将无序的数据按照特定的规则排成有序数据(升序、降序)。这篇文章我们来了解一下Java中常见的三种排序方式,即冒泡排序、二分查找、插入排序。既然要排序,那么就要考虑时间复杂度和空间复杂度这两个因素,我们可以在System.currentTimeMillis()里面查看。......

HAN&BLOG 999

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

插入排序和直接选择排序都是稳定的_冒泡排序、选择排序、插入排序

排序算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。算法复杂度稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b...

weixin_30375113的博客 4708

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

冒泡排序、选择排序、插入排序的Python实现

文章目录冒泡排序选择排序插入排序 冒泡排序 冒泡排序思想是最简单的排序思想之一。就是采用暴力的方法,由于这种算法思想的缘故,就像是让最大的数像泡泡一样滚动,所以叫冒泡排序。 Python实现: def bubble_sort(alist): for j in range(len(alist)-1,0,-1): # j表示每次遍历需要比较的次数,是逐渐减小的 ...

九久的博客 361

冒泡排序,插入排序,选择排序

在学习冒泡排序、插入排序以及选择排序的过程中的一些小总结,希望大家多多来提建议!!

vincent_vang的博客 388

插入排序,冒泡排序,快速排序,选择排序快速理解

1.插入排序 2.冒泡排序 3.快速排序 4.选择排序

二哈的博客 653

插入排序、选择排序和冒泡排序详解

排序对于任何一个程序员来说可能都不陌生,在我们日常的开发中多多少少都会涉及到排序的场景,如按照订单交易时间排序,按照金额排序等等。很多语言都内置了相应的排序函数,而且讲起排序算法时都可以列出一大堆,此文初步探索下插入排序,选择排序和冒泡排序。 此处先说明下排序算法的稳定性: 稳定性,这个概念是说,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变,如下待排序的序列。 图中框住的两个元素2,排序后相对位置不变,前面的2还是在前面,后面的2还是相对在后面。其实你也许有疑问.

码农笔记 1626
上一篇: JavaScript基础笔记
下一篇: common通过js方法
喵_美
博客等级 码龄11年 445粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值