博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典排序之 冒泡排序
阅读量:7251 次
发布时间:2019-06-29

本文共 1804 字,大约阅读时间需要 6 分钟。

Author: bakari  Date: 2012.7.30

排序算法有很多种,每一种在不同的情况下都占有一席之地。关于排序算法我分“经典排序之”系列分别述之。本篇为冒泡排序。

冒泡排序是最古老的排序,我们最早开始学的排序算法:

冒泡排序总共有三种不同的形式,对应三种不同的排序算法。(C++语言)

 转载引用请注明出处: 谢谢!

先看类的描述:

1 /************************************************ 2  *  Author: bakari Date: 2012.7.30 3  *  三种冒泡排序 4  *  第一种:将最小的元素冒泡到最前面 5  *  第二种:将最大的元素冒泡到最后面 6  *  第三种:双向冒泡 7  ************************************************/   8 class BubbleSort 9 {10     int len;11     vector
BubbleList;12 public:13 BubbleSort(vector
,int);14 void Bubble_Sort1();15 void Bubble_Sort2();16 void Bubble_Sort3();17 void Swap(int,int);18 void Print();19 };

 

1、将小元素冒泡到最前面,首先操作的是小元素。

1 // 第一种 2 void BubbleSort::Bubble_Sort1() 3 { 4     for (int i = 0; i != len - 1; ++i) 5     { 6         for (int j = i + 1; j != len; ++j) 7         { 8             if (BubbleList[j] < BubbleList[i]) 9                 Swap(i,j);10         }11     }12 }

 

2、将最大的元素冒泡到最后面

1 //第二种 2 void BubbleSort::Bubble_Sort2() 3 { 4     for (int i = 0; i != len; ++i)  //注意和上面的算法对照此循环 5     { 6         for (int j = 0; j != len - 1 - i; ++j) //j只能到len - 1; 7         { 8             if(BubbleList[j + 1] 

 

3、双向冒泡

怎么个双向法请看代码:

1 //第三种 2 void BubbleSort::Bubble_Sort3() 3 { 4     int left = 0; 5     int right = len - 1; 6     int i; 7     while (left < right) 8     { 9         for (i = left;i != right; ++i)            //从左到右冒泡10         {11             if (BubbleList[i + 1] < BubbleList[i])12                 Swap(i + 1,i);                    //交换13         }14         right = i - 1;15         for (i = right;i != left; --i)             //从右到左冒泡16         {17             if (BubbleList[i - 1] > BubbleList[i])18                 Swap(i - 1,i);19         }20         left = i + 1;21     }22 }

 


开了个公众号「aCloudDeveloper」,专注技术干货分享,期待与你相遇。

你可能感兴趣的文章
IT168:2014年APT***发展趋势及防御策略调研
查看>>
用好ul和li
查看>>
基于JQUERY的AJAX跨域问题完美解决方案
查看>>
搭建LVS+Keepalived高可用负载均衡集群
查看>>
局域网PING不通原因是什么?解决ping不通局域网电脑
查看>>
泄露们事件
查看>>
springmvc提交带日期的表单400
查看>>
我的友情链接
查看>>
使用Python socket获取本机ip
查看>>
java 简单的加解密操作
查看>>
qmake 之 CONFIG 与 QT 乱谈
查看>>
ExtJS 创建动态加载树
查看>>
我的友情链接
查看>>
tensorflow入门简单卷积神经网络
查看>>
我的友情链接
查看>>
the dude 使用教程和一点感觉
查看>>
Spring4+Hibernate4 注解整合配置
查看>>
螺旋数字程序
查看>>
Pyhton 第九章 正则表达式
查看>>
mysql主从配置
查看>>