一.介绍

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。
走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),
就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
二.原理

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

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

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

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

三.时间复杂度

 冒泡排序算法的时间复杂度是

C#代码实现

using System;

namespace BubbleSort
{
class Program
{
static void Main(string[] args)
{
int[] arr = { , , , , };
foreach (var item in GetBubbleSort(arr))
{
Console.WriteLine(item);
} Console.ReadLine();
} static int[] GetBubbleSort(int[] arr)
{
int count = ;
int temp = ;
for (int i = ; i < arr.Length - ; i++)
{
for (int j = i + ; j < arr.Length; j++)
{
if (arr[j] < arr[i])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
count++;
}
count++;
} Console.WriteLine(count);
return arr;
}
}
}

 Java代码实现

package cn.lb.test;

public class BubbleSort {
public static void main(String[] args){
int[] arr={2,5,6,4,3};
for (int item :getBubbleSort(arr))
{
System.out.println(item);
}
} public static int[] getBubbleSort(int[] arr)
{
int count=0;
int temp=0;
for (int i = 0; i <arr.length-1 ; i++) {
for (int j =0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
count++;
}
count++;
}
return arr;
}
}

Python代码实现

def getBubbleSort(arr):
for i in range(len(arr)-1,0,-1):
for j in range(0,i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
return arr
arr=[2,4,6,3,5]
arr=getBubbleSort(arr)
print(arr)

JavaScript代码实现

let getBubbleSort=(arr)=>{
let temp=0;
for (let i = 0; i < arr.length; i++) {
for (let 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;
}
}
}
return arr;
}
let arr=[2,5,6,4,3];
arr=getBubbleSort(arr);
arr.forEach(num=>{
console.log(num);
});

C语言实现

#include <stdio.h>
int* getBubbleSort(int arr[], int len)
{
int i, j, temp;
for (i = ; i < len - ; i++)
{
for (j = ; j < len - i - ; j++)
{
if (arr[j] > arr[j + ])
{
temp = arr[j];
arr[j] = arr[j + ];
arr[j + ] = temp;
}
}
}
return arr;
} int main() {
int arr[] = { ,,,, };
int len = (int)sizeof(arr) / sizeof(*arr);
int* p = getBubbleSort(arr, len);
int i;
for (i = ; i < len; i++)
{
printf("%d", *(p + i));
}
}

C++实现

#include <iostream>
using namespace std; int* getBubbleSort(int arr[], int len)
{
int i, j, temp;
for (i = ; i < len - ; i++)
{
for (j = ; j < len - i - ; j++)
{
if (arr[j] > arr[j + ])
{
temp = arr[j];
arr[j] = arr[j + ];
arr[j + ] = temp;
}
}
}
return arr;
} int main() {
int arr[] = { ,,,, };
int len = (int)sizeof(arr) / sizeof(*arr);
int* p = getBubbleSort(arr, len);
int i;
for (i = ; i < len; i++)
{
cout<<("%d", *(p + i))<<endl;
}
}

冒泡排序算法(C#、Java、Python、JavaScript、C、C++实现)的更多相关文章

  1. 编程开发(C/C++&Java&Python&JavaScript&Go&PHP&Ruby&Perl&R&Erlang)

    使用Docker快速部署主流编程语言的开发.编译环境及其常用框架,包括C.C++.Java.Python.JavaScript.Go.PHP.Ruby.Perl.R.Erlang等. 在今后采用编程语 ...

  2. 冒泡排序算法(Java)

     冒泡排序即每次遍历.相邻数字间进行比較,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置:算法关键要点在于确定每次循环的边界. 后面两种算法则是对冒泡排序一定程度上的改良,但相对于其它排 ...

  3. 简单的冒泡排序算法(java)

    package lianxi; public class BubbleSort { public static void main(String[] args) { int[] array = {12 ...

  4. Java调用Javascript、Python算法总结

    最近项目中经常需要将Javascript或者Python中的算法发布为服务,而发布Tomcat服务则需要在Java中调用这些算法,因此就不免要进行跨语言调用,即在Java程序中调用这些算法. 不管是调 ...

  5. [转]Java调用Javascript、Python算法总结

    最近项目中经常需要将Javascript或者Python中的算法发布为服务,而发布Tomcat服务则需要在Java中调用这些算法,因此就不免要进行跨语言调用,即在Java程序中调用这些算法. 不管是调 ...

  6. 冒泡排序算法的C++,Java和Python实现和冒泡排序算法三种语言效率的比较

    冒泡排序原理: 这一篇百度经验讲得很好,我不多说了 https://jingyan.baidu.com/article/6525d4b13f920bac7d2e9484.html 他讲的是C语言,没有 ...

  7. 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类

    30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...

  8. indexOf原理,Java,javascript,python实现

      简介 最近做项目的时候,发现无论是前端还是后端,indexOf出现的概率都非常频繁,今天我们来看下他的实现原理吧! indexOf的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下 ...

  9. java:高速排序算法与冒泡排序算法

     Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /**   *  * @Description:  * @author:cuiyaon ...

随机推荐

  1. F5中设置OA通过F5进行访问设置

  2. 1)PHP,数据库操作类网址

    (1)脚本之家 http://www.jb51.net/article/94347.htm (2)一个博客 http://www.cnblogs.com/lvchenfeng/p/5003629.ht ...

  3. druid yml

    application-db.yml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true p ...

  4. 自定义控件 监控宿主activity的生命周期

    使用不显示的fragment来监控activity生命周期,fragment生命周期基本上跟随宿主activity变化.我们通过fragment的生命周期就可以知到activity的生命周期 我们自定 ...

  5. wireshark的过滤命令

    1.ip.addr == 192.168.1.1 这种是目标地址和源地址都是 后面指定的IP

  6. python学习笔记(16)hashlib.md5摘要算法(哈希算法)

    一.摘要算法格式 import hashlib #导入hashlib模块 md = hashlib.md5() #获取一个md5加密算法对象 md.update('how to use md5 in ...

  7. input之按键输入

    通过直接操作驱动来监控键盘,只要程序一旦在后台启动,无论在任何页面都可以监控到按键的数值. 步骤如下: 1.找到键盘挂在点:有两种方法 方法一:在   /dev/input路径下通过  cat eve ...

  8. Ubuntu 12.04 编译bcm93349dcm软件包

    1.准备工作操作系统:Ubuntu 12.04 获取bcm93349dcm软件包: bootloader源代码:Bootloader_2_2_0.zip CM源代码:ProdD20_BFC4.4.10 ...

  9. Excel-DNA开发包:ExcelDna-0.34.6.zip下载

    Excel-DNA可以用VB.Net或C#开发Excel自定义函数.制作.xll格式的加载宏. 点此下载 ExcelDna-0.34.6.zip

  10. C# SerialPort 读写三菱FX系列PLC

    1:串口初始化 com = , Parity.Even, , StopBits.One); 2:打开关闭串口 if (com.IsOpen) { com.Close();//关闭 } com.Open ...