经典排序一:冒泡排序

转载 2017年09月27日 10:18:49

经典排序算法 - 冒泡排序Bubble sort

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大或最小的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

例子为从小到大排序,

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |


第一趟排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

 

第二次两两比较,6 > 4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

 

第三次两两比较,6 > 1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

 

第四次两两比较,6 > 5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第五次两两比较,6 < 9不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二趟排序(外循环)

第一次两两比较2 < 4不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二次两两比较,4 > 1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三次两两比较,4 < 5不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第四次两两比较,5 < 6不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三趟排序(外循环)

第一次两两比较2 > 1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第二次两两比较,2 < 4不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第三次两两比较,4 < 5不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换


排序完毕,输出最终结果1 2 4 5 6 9


 static void bubble_sort(int[] unsorted)
        {
            for (int i = 0; i < unsorted.Length; i++)
            {
                for (int j = i; j < unsorted.Length; j++)
                {
                    if (unsorted[i] > unsorted[j])
                    {
                        int temp = unsorted[i];
                        unsorted[i] = unsorted[j];
                        unsorted[j] = temp;
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            int[] x = { 6, 2, 4, 1, 5, 9 };
            bubble_sort(x);
            foreach (var item in x)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }


十大经典排序总结

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 ...
  • lmxmimihuhu
  • lmxmimihuhu
  • 2015年08月03日 10:13
  • 1691

c#泛型冒泡排序法

public delegate bool Contrast(T t1, T t2); public static void Sequence(T[] items, Contrast contrast)...
  • ajianchina
  • ajianchina
  • 2015年09月13日 00:56
  • 1439

顺序表的冒泡排序算法及二分法查找代码实现

本文主要实现了比较经典的冒泡排序算法(对已经有序或者基本有序的顺序表复杂度大大降低),和二分法查找,各位看官看代码吧//冒泡排序算法及二分法查找 #include "stdio.h" typedef ...
  • guguizi
  • guguizi
  • 2016年05月06日 18:32
  • 1987

冒泡排序同时对下标进行排序

#include #include #include using namespace std; #define size 10 struct temp { int numbe...
  • Iamduoluo
  • Iamduoluo
  • 2010年07月15日 19:45
  • 1302

冒泡排序可以排序多个字符串

在实现多个字符串的排序之前,先来回顾一下冒泡排序: 算法原理: 每次对相邻的两个元素进行比较,若前者大于后者则交换,如此一趟下来最后一个则是最大的一个元素;重复以上步骤,除了已经确定位置的...
  • lemonwxj
  • lemonwxj
  • 2016年04月21日 18:24
  • 1483

排序——冒泡排序(三种方法)

冒泡排序的基本思想:         在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的...
  • laoniu_c
  • laoniu_c
  • 2014年08月15日 12:13
  • 924

vb冒泡排序函数

Sub   BubbleSort(List()   As   Long,   Number   As   Long,   DataCount   As   Long,   SmallToBig   A...
  • zxs820329
  • zxs820329
  • 2007年02月15日 13:05
  • 4726

ArrayList实现冒泡排序

用ArrayList实现冒泡排序public class ArrayListSort { public static void main(String[] args) { Ar...
  • mhtqq809201
  • mhtqq809201
  • 2016年06月13日 11:31
  • 3299

C#实现冒泡排序之对泛型排序

在前面的文章中我们讲述了C#如何实现冒泡排序!那么有没有想过如何实现对任意的数据类型进行冒泡排序呢?这里我们将就此问题进行解答!首先我们了解到冒泡排序的本质就是升序或者降序排列一个数组的元素!我们首先...
  • lxt610
  • lxt610
  • 2017年04月24日 14:10
  • 767

冒泡排序和选择排序法的图示解析

思路:在进行冒泡法排序(升序)时,需要将数组元素(len)两两比较,如果 前面的元素大于后面的元素,则交换两个数,否则,比较下一个元素和它的下一个元素的大小,依次执行,执行一次循环,可以找到当前...
  • qq_34992845
  • qq_34992845
  • 2016年11月22日 00:25
  • 1537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:经典排序一:冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)