冒泡排序经典的排序算法,实现的思想是通过两两相邻的元素比较,使较大的数字不断向队列上部浮动,就如同水里的一个气泡一般不断向上浮,所以才得到一个"冒泡排序"好听的名字。

图片转载

那接下来我通过一个小例子来看看冒泡排序的实现:[7,4,1,8,2]

上面的数组实现从小到大排序。

因为冒泡排序是两两相邻比较,所以step1

7与4比较,7>4,交换位置后得数组:[4,7,1,8,2]

step2

7与1比较,7>1,交换位置后得数组:[4,1,7,8,2]

step3

7与8比较,7<8,不进行交换得数组:[4,1,7,8,2]

step4

8与2比较,8>2,交换位置后得数组:[4,1,7,2,8]

至此第一轮冒泡结束,我们看到数组中元素最大的8已经到了最后,这就是经过一轮冒泡,最大的元素已经浮动到最上面。之后只要重复这4个步骤就可以了。

但是这个没经优化的冒泡排序的时间复杂度是O(N2)。

优化的思想就是:如果数组中某个元素到最后一个元素是已经排好序的,那么这段数据就不需要进行比较并排序了。[2,1,4,5,6,7,8]

像这个数组中,[4,5,6,7,8]是已经排好序的,只需要排[2,1]就ok。

代码如下:html>

冒泡排序

function myclick(){

var value = document.getElementById("sort_array").value;

var array = value.split(",");

document.getElementById("echo_array").value = mysort(array).toString();

}

//排序算法

function mysort(arr){

var i,flag = 1,temp,j=arr.length;

while(flag){

flag = 0;//每次数组的循环之前置为0

for(i=1;i

if(parseInt(arr[i])>parseInt(arr[i-1])){

temp = arr[i];

arr[i] = arr[i-1];

arr[i-1] = temp;

flag = 1;//标志位,如果有交换则置为1

}

}

j = i;//记录最后一次交换的数组下标

}

return arr;

}

input{

width: 300px;

}

请输入待排序的数字,用逗号隔开:

请输入待排序的数字,用逗号隔开:

这样经过优化过的算法最好的时间复杂度是O(n),最坏的情况下还是O(N2)

Oracle数组冒泡排序,排序算法之冒泡排序相关推荐

  1. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  2. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  3. golang 排序_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  4. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  5. 数据结构与算法:十大排序算法之冒泡排序

    数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...

  6. 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

    [排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...

  7. php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ...

  8. 排序算法——1冒泡排序算法

    一.冒泡排序常规算法: 冒泡排序原理:比较相邻两元素,将值大的交换到右边(从小到大排序,也可从大到小排序): 步骤: (1)第一趟第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面. ...

  9. 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

最新文章

  1. matlab检验两个样本的,两样本独立T检验MATLAB代码
  2. rust比java慢,rust为什么跑得比js慢
  3. 解释内存中的栈、堆、静态区
  4. 操作多个表_3_查询两个表共同的行
  5. NDK avi播放器
  6. JavaWeb基础学习笔记
  7. CentOS下面service mysqld start出现[failed]情况
  8. c语言字符串逆置,字符串逆置
  9. 根据输入的出生日期计算到今天之间的天数
  10. centos 删除crontab_Centos7:利用crontab定时执行任务
  11. 信号通讯编程,王明学learn
  12. ASP.NET MVC2 数据模型验证类库:MVC Foolproof Validation
  13. 利用C语言实现99乘法表两种方式
  14. 99%的人误解BLM中的“战略”与“执行”的关系及错误认为BLM/BEM就是战略解码的全部!
  15. JavaScript实现变化的满天星星
  16. 人工智能为什么要用Python语言?
  17. 【转载】Java多线程编程2--同步锁定--synchronized同步方法、脏读、锁重入
  18. 函数——哥德巴赫猜想
  19. 对话阿博茨CTO刘铁锋:得开放平台者,得RPA天下
  20. 玩转FFmpeg的7个小技巧

热门文章

  1. aws Exam 3
  2. 汽车大灯灯座模具设计_汽车换挡器模具设计_汽车速度仪表盘模具设计_汽车变速箱.solidworks 设计_汽车烟灰上盖模具设计_汽车内部饰条模具设计_汽车悬架悬挂系统模型_车灯装饰件模具设计……
  3. 开启network-manager.service
  4. Oracle:trunc()函数简介
  5. SAP 预制凭证小结
  6. scrapy-crawl
  7. nginx + php 出现file not found问题解决方案
  8. FZU 2243 Daxia like uber
  9. 董承非路演:回答美联储加息 港股中概等热点
  10. 打开辣妈萌宝很好地承载了宝宝所有的幸福记录