美文网首页
排序算法:冒泡排序(Bubble Sort)

排序算法:冒泡排序(Bubble Sort)

作者: SupersJ | 来源:发表于2017-05-03 14:17 被阅读22次

思路:
对一组乱序的数,自下而上两两进行比较交换,使较小的数上升,而较大的数下沉。

实现代码
<pre>
//value为待排序的数组
for(int i=0; i<value.length-1; i++) {
for(int j=value.length-1; j>i; j--) {
if(value[j-1] > value[j]) {
int tmp = value[j-1];
value[j-1] = value[j];
value[j] = tmp;
}
}
}
</pre>

前辈们提出的一些改进

1、设置一标志性变量flag,用于记录每趟排序中最后一次进行交换的位置。由于flag位置之后的记录均已交换到位,故在进行下一趟排序时只要扫描到flag位置即可。

改进代码
<pre>
//value为待排序的数组
int i = value.length - 1;//初始时,最后位置保持不变
while (i > 0) {
int flag = 0;
for (int j = 0; j < i; j++) {
if (value[j] > value[j + 1]) {
flag = j;//记录交换的位置
int tmp = value[j];
value[j] =value[j + 1];
value[j + 1] = tmp;
}
}
i = flag;//为下一趟排序作准备
}
</pre>

2、传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。

改进代码
<pre>
//value为待排序的数组
int low = 0;
int high = value.length - 1;
int tmp, j;
while (low < high) {
for (j = low; j < high; ++j) {
if (value[j] > value[j+1]) {
tmp = value[j];
value[j]=value[j+1];
value[j+1]=tmp;
}
}
--high;//修改high值, 前移一位

for (j = high; j > low; --j) {
    if (value[j] < value[j-1]) {  
            tmp = value[j];
        value[j] = value[j-1];
        value[j-1] = tmp;
    }   
}
++low; //修改low值,后移一位  

}
</pre>

以上就是冒泡排序的基本实现思路和改进,为了更清楚的知道改进后对效率是否有较大的提升,我们进行如下实验。

随机生成一万个无序的含有一万个随机零到十万整数的数列,使用上面三种方法对其进行排序,分别记录比较次数和交换次数。


未经同意,不得转载。

相关文章

  • 排序经典算法

    冒泡算法(bubble sort) 选择排序(selection sort) 插入排序(insertion sor...

  • 排序算法记录

    排序算法 冒泡排序(bubble sort) 优化后时间复杂度是O(n) 选择排序(selection sort)...

  • 「JAVA」Java基础之冒泡排序、选择排序分析,简单、直观、明

    ​冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort):排序思路:对要排序的数组或者列表从头到尾...

  • 排序系列之四: 冒泡排序法

    Hello,大家好。今天继续给大家讲解排序系列之☞《冒泡排序算法》 冒泡排序(Bubble Sort)...

  • 深入浅出 Swift 算法系列一:冒泡排序

    什么是冒泡排序(Bubble Sort) 首先,我们先瞄一眼冒泡排序算法的定义: 冒泡排序 是一种简单的排序算法。...

  • ★ 数组排序

    sort 方法实现 冒泡排序 时间复杂度O(n2) 冒泡排序(Bubble Sort)是最易懂的排序算法,但是效率...

  • 冒泡排序算法

    冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。冒泡排序算法的思路就是交换排序,通过相...

  • 排序

    排序算法比较 一、冒泡排序(Bubble Sort) 基本思想 冒泡排序是一种简单的排序算法。它重复地走访要排序的...

  • Python算法--排序-冒泡排序

    一、冒泡排序 我们在学校都学习过排序算法,这些排序算法中就有一个我们常提到的冒泡排序(Bubble Sort)。 ...

  • 常见排序算法之冒泡排序

    常见排序算法之冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,...

网友评论

      本文标题:排序算法:冒泡排序(Bubble Sort)

      本文链接:https://www.haomeiwen.com/subject/zriozttx.html