十大排序算法之(二)——冒泡排序

#1,简介

冒泡排序是一种比较基础、简单的排序算法,它的思想就是:key值较大的会像泡泡一样被你挑选出来向后或者向前移,这具体取决于你想要的结果数组是大序排列还是小序排列。

操作:对数组(或者其他存储结构)依次遍历,比较相邻两个元素,若与你设定的顺序相反,则交换位置,然后对数组要进行len-1次这样的遍历(len是数组长度)。

#2,c++实现

#include<iostream>
#include<vector>

using namespace std;

void BubbleSort(vector<int> &a);
void swapv(int &a, int &b);

int main(){
  vector<int> array = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 };

  BubbleSort(array);

  cout<<"The sorted array is: "<<endl;
  for (vector<int>::iterator iter = array.begin(); iter != array.end(); iter++)
  cout<< *iter <<"\t";
  cout<<endl;

  system("Pause");
  return 0;
}

void BubbleSort(vector<int> &a){
  int len=a.size();
  int index = 0;

  do{
    index=0;
    for (int i = 0; i<len - 1; i++){
      if(a[i]>a[i+1]){
        swapv(a[i],a[i+1]);
        index++;
      }
    }
  } while (index != 0);
}

void swapv(int &a, int &b){
  a=a+b;
  b=a-b;
  a=a-b;
}

#3,程序运行结果

时间: 2024-10-27 07:31:37

十大排序算法之(二)——冒泡排序的相关文章

十大排序算法总结

排序算法术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排序操作都在内存中完成:外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行: 时间复杂度: 一个算法执行所耗费的时间.空间复杂度: 运行完一个程序所需内存的大小. 排序算法图片总结(图片来源于网络) 图片名词解释:n: 数据规模k:"桶"的个数In-place: 占用常数内存,不占用额外内存

十大排序算法总结(Python3实现)

十大排序算法总结(Python3实现) 本文链接:https://blog.csdn.net/aiya_aiya_/article/details/79846380 目录 一.概述 二.算法简介及代码展示 1.冒泡排序 2.简单选择排序 3.简单插入排序 4.堆排序 5.快速排序 6.希尔排序 7.归并排序 8.计数排序 9.桶排序 10.基数排序 11.#代码说明 三.感悟总结 ________________________________________ 一.概述 排序算法大概是hello

十大排序算法--多图预警

十大排序算法 十大排序算法 简单的排序算法 插入排序 冒泡排序 选择排序 高效的比较排序算法 希尔排序 快速排序 归并排序 堆排序 牺牲空间的线性排序算法 计数排序 桶排序 基数排序 综合分析 简单的排序算法 Θ(n^2) 插入排序 动画演示 enter description here 原理 将数组看成两部分,一部分为已排序好的数组,后面的部分为未排序数组,每次从后面的数组中取出元素与前面的有序元素一一比较,若小于则向前移动,直到找到正确的位置插入.遍历后面的数组直到整个数组排序完成. 代码

十大排序算法整理(一):概览

十大排序算法分类.特点和关系 (1)冒泡排序(交换排序的一种) (2)选择排序 (3)插入排序 (4)归并排序(采用了分治思想,额外的空间复杂度O(N),容易记错,最后合并大数组的时候需要开辟一个长度为N的数组)  https://blog.csdn.net/u010452388/article/details/81008727 (5)快速排序(采用了分治思想,交换排序的一种,额外的空间复杂度O(NlogN),容易记错) 归并排序每次递归需要用到一个辅助表,长度与待排序的表相等,虽然递归次数是O

js十大排序算法详解

十大经典算法导图  图片名词解释:n: 数据规模k:"桶"的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1  原始人冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]

js十大排序算法收藏

十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉...冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,

JS十大排序算法

十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 什么时候最快(Best Cases): 当输入的数据已经是正序时 什么时候最慢(Worst Cases): 当输入的数据是反序时 冒泡排序动图演示: 冒泡排序JavaScript代码实现: function bubbleSo

JS的十大排序算法

 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉...冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序.但这种改进对于提升性能来说并没有什

go语言十大排序算法总结

选择排序 选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置.这样,经过i遍处理之后,前i个记录的位置已经是正确的了. 选择排序是不稳定的.算法复杂度是O(n ^2 ). 个人总结: 选择排序,就是要又一个游标,每次在做比较的同时,纪录最大值,或者最小值的位置,遍历一遍之后,跟外层每次纪录的位置,做位置交换.为什么叫选择排序呢,估计就是这个原因,每次遍历一遍,选个最大或者最小的出来.算法因此得名. package main impor