【数据结构】冒泡排序

冒泡排序,有时候又叫做下沉排序,是一种很简单的排序算法,它通过一系列重复的操作来让一个序列变得有序:
比较相邻的2项,如果他们不符合排序的顺序,则交换他们的位置,重复这个操作,直到没有元素需要交换为止,这个时候也就意味着序列已经有序了。

虽然冒泡排序很简单,但是它太慢了,即便是相对插入排序来说。所以于我们一般不会选择它去解决实际的编程问题。

当序列基本有序,只有几处地方无序,且无需元素间距很近时,我们才会考虑使用它。

冒泡排序的要点

  • 冒泡排序需要 二重循环,最外层控制 趟数 , 每一趟 会在当前比较序列选出一个最大的数沉底。最内层控制在当前排序序列中找出最大数。
  • n个元素排序,最外层循环趟数是 n-1 ,而不是 n。想想只有一个元素的序列,需要比较几趟呢?显然是 1-1=0趟,因为无需比较。
  • 时间复杂度: O(n2)
  • 稳定性:      稳定

如此重复...

void bubble_sort(int*arr,int len)
{
    int temp;
    for(int i=0;i<len-1;++i)        //最外层循环控制 "趟" 数
    {
        for(int k=0;k<len-1-i;++k)  //缩短比较序列,循环比较,需要时。交换
            if(arr[k]<arr[k+1])     //升序排序
            {
                temp = arr[k];
                arr[k] = arr[k+1];
                arr[k+1] = temp;
            }
    }
}
时间: 2024-08-09 19:01:39

【数据结构】冒泡排序的相关文章

数据结构-冒泡排序

#include <iostream> using namespace std; void BubbleSort(int* a,int n){ for(size_t i=0;i<n;i++){ for(size_t j=0;j<n-i;j++){ if(a[j] > a[j+1]){ int tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } } int main() { int a[] = {1,5,8,9,6,4,7,2,3,0}

大话数据结构----冒泡排序Bubble sort

冒泡排序是排序算法中最基础的排序算法: 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换 package com.neuedu.java; public class BubbleSort { public static void main(String[] args) { int [] arr=new int[]{0,9,5,45,12,94,56,7}; BubbleSort(arr); for(int i=0;i<arr.length;i++){ System.out.p

数据结构-冒泡排序算法

算法稳定性 冒泡排序就是把小的元素往前调或者把大的元素往后调.比较是相邻的两个元素比较,交换也发生在这两个元素之间.所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的:如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法.从大到小的冒泡排序 package structsmethod; /*  * 冒泡  */ public class BubbleSort { public void

大话数据结构——冒泡排序

#include<iostream> using namespace std; #define MAX_SIZE 100//用于排序数组个数的最大值 typedef struct { int r[MAX_SIZE+1];//用于存储要排序的数组 int length;//用于记录顺序表的长度 }sqlist; //用于交换数组r中下标i和下标j的数组元素的值 void swap(sqlist* L, int i,int j) { int temp; temp=L->r[i]; L->

数据结构-冒泡排序(Python&amp;java实现)

1. 冒泡算法的核心思想冒泡排序的核心思想就是扫描数据清单,找到乱序的两个相邻的数据进行两两比较并交换位置,然后继续扫描数据,接着反复重复上述的操作直至排序结束.2. 示例我们以23,15,58,-4,99,0这组无序的数字为例:例子为从小到大排序,初始状态:23,15,58, -4,99,0第一次排序结果:15,23,-4,58,0,99第二次排序结果:15,-4,23,0,58,99第三次排序结果:-4,15,0,23,58,99第四次排序结果:-4,0,15,23,58,99第五次排序结果

[golang] 数据结构-冒泡排序

碎碎念不能再经典的排序算法,说到排序算法大部分可能第一印象就是它了吧.记得大学时老师还花了一节课的时间进行详细解释. 原理冒泡算法(bubble sort) 是一种很简单的交换排序.每轮都从第一个元素开始,依次将较大值向后交换一位,直至整个队列有序. 复杂度和其他低效排序算法一样,平均时间复杂度是O(n^2).最好的情况就是原队列就是排列好的数组,这个时候时间复杂度就是O(n).空间复杂度为O(1),用于交换.按顺序通过比较排序的算法都是稳定的,冒泡排序也是这样. 代码 package main

python算法与数据结构-冒泡排序(32)

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

数据结构-冒泡排序法

冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,压力最大,气泡最小:当慢慢浮上水面时,发现气泡由小渐渐变大. 冒泡排序法的比较方式由第一个元素开始,比较相邻元素大小,若大小顺序有误,则对调后再进行下一个元素的比较.如此扫描过一次之后就可确保最后一个元素是位于正确的顺序.接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止. 演算过程 由此可知 5 个元素的冒泡排序法必须执行 5-1 次扫描,第一次扫描需比较 5-1 次,共比较 4+3+2+1

python 数据结构与算法之排序(冒泡,选择,插入)

目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 计算机重要的几门课: 1.数据结构和算法 2.网络 3.操作系统 4.计算组成原理 数据结构与算法: 算法: 衡量算法的标准: 时间复杂度:就是程序代码执行的大概次数 小结: 时间复杂度是用来估计算法运行时间的一个式子(单位) 一般来说,时间复杂度高的算法比复杂度低的算法慢 常见的

大公司的PHP面试题

1. 禁用COOKIE 后 SEESION 还能用吗? 2. 抓取远程图片到本地,你会用什么函数? 4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少? 5. 简述pOST 和GET传输的最大容量分别是多少? 6. 用最少的代码写一个求3值最大值的函数. 附部分答案(不保证是正确的解) 1. 不能2 fsockopen 4 (不做优化的情况下一样)5 2MB,1024B6 function($a,$b,$c){return $a>$b? ($a>$c? $a : $c)