经典排序之 冒泡排序

简介: Author: bakari  Date: 2012.7.30 排序算法有很多种,每一种在不同的情况下都占有一席之地。关于排序算法我分“经典排序之”系列分别述之。本篇为冒泡排序。 冒泡排序是最古老的排序,我们最早开始学的排序算法: 冒泡排序总共有三种不同的形式,对应三种不同的排序算法。

Author: bakari  Date: 2012.7.30

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

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

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

 转载引用请注明出处:http://www.cnblogs.com/bakari/archive/2012/08/11/2633672.html 谢谢!

先看类的描述:

 1 /************************************************
 2  *  Author: bakari Date: 2012.7.30
 3  *  三种冒泡排序
 4  *  第一种:将最小的元素冒泡到最前面
 5  *  第二种:将最大的元素冒泡到最后面
 6  *  第三种:双向冒泡
 7  ************************************************/  
 8 class BubbleSort
 9 {
10     int len;
11     vector<int> BubbleList;
12 public:
13     BubbleSort(vector<int>,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] <BubbleList[j])
 9                 Swap(j + 1,j);
10         }
11     }

 

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 }

 

目录
相关文章
|
搜索推荐
简单排序 --- 冒泡排序算法 (常见经典排序算法)
简单排序 --- 冒泡排序算法 (常见经典排序算法)
76 0
|
存储 算法 搜索推荐
【C语言程序设计】知识点汇总7——排序与查找原理与代码(冒泡排序,选择排序,插入排序,二分查找)
【C语言程序设计】知识点汇总7——排序与查找原理与代码(冒泡排序,选择排序,插入排序,二分查找)
176 0
|
搜索推荐 算法 Java
排序:冒泡排序(算法)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
273 0
排序:冒泡排序(算法)
|
算法 JavaScript 人工智能
|
机器学习/深度学习 人工智能
|
机器学习/深度学习 人工智能
|
机器学习/深度学习 人工智能