例子说冒泡排序
来源:互联网 发布:沪港通资金数据 编辑:程序博客网 时间:2024/06/06 18:36
一、原理:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
如下例中6与5相比较,因为它们不相等,所以需要进行交换位置,把6与5进行交换,然后再进行下一对的比较,6与3,也要进行交换位置,以此类推,直到最后一个数是最大的,每一趟排序都是最大的浮出来,就像金鱼在水中缺氧就会浮到水面,嘴巴一张一闭进行呼吸而形成的吐泡泡一样,总是会不断的有泡泡出来连成一串,很好看。
二、C#中的冒泡排序
例:把{ 6,5,3,1,8,7,2,4 }这个数组按从小到大进行排列:
/*********************************************** '类 名 称:Bubble '命名空间:BubbleTest '创建时间:2016年3月30日 '作 者:Q '说 明: '版 本 号:v1.0.0 ************************************************/using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BubbleTest{ class BubbleOne { //创建一个排序的数组 static List<int> list = new List<int>() { 6, 5, 3, 1, 8, 7, 2, 4 }; static void Main(string[] args) { Bubble(); PrintList(); } static void Bubble() { int temp = 0; for (int i = list.Count; i > 0; i--) //数组有N个数,那么用N-1次大循环就可以排完 { for (int j = 0; j < i - 1; j++) //从数组下标0处开始遍历 i - 1 是刨除已经排好的大数 { if (list[j] > list[j + 1]) //相邻两个数进行比较,如果前面的数大于后面的数,则将这相邻的两个数进行互换 { temp = list[j]; list[j] = list[j + 1]; list[j + 1] = temp; } } PrintList(); //发生过互换,打印出来 } } private static void PrintList() { foreach (var item in list) { Console.Write(string.Format("{0} ", item)); } Console.ReadLine(); } }}
最后输出的结果是:
冒泡排序动态图:
三、算法的稳定性:
如果相邻的两个元素是相等的,那咱们也不会无聊到让它们交换位置;如果两个相等的元素没有相邻,那么即使通过前面的两两交换之后两个相邻在一起了,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
0 0
- 例子说冒泡排序
- 桶排序,冒泡排序,快速排序三者比较(例子说名)
- 简约说排序---冒泡排序
- 冒泡排序小例子
- 冒泡排序小例子
- java(冒泡排序例子)
- 简单冒泡排序例子
- 冒泡排序的一个例子
- Java 冒泡排序的例子
- C 语言 冒泡排序法 例子
- 一个java 冒泡排序的例子
- 字符串数组的冒泡排序,从小到大(冒泡法前几篇有例子)
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- 冒泡排序--(原理和自己的例子)
- php中一个“冒泡排序”的小例子
- 冒泡排序的两个例子(objective-c)
- java面试常考的典型例子:冒泡排序
- Python的列表介绍和冒泡,希尔排序算法例子
- html中dispaly 与 visibility的区别
- Missing library: xdoclet-1.2.1.jar. Select the home directory for XDoclet. 1.2.1
- 算法设计15-8签约棒球自由球员
- Android学习笔记--SimpleAdapter的使用(详解5个参数)
- Eclipse快捷键要在英文输入法状态下
- 例子说冒泡排序
- MySQL备份模式
- python 中文分词
- 格式化字符串
- 【C#】打印控件中的内容和打印窗体中的内容
- Android Studio常用插件
- 野指针与内存泄露
- viewpager
- GEEK学习笔记— —Linux常用命令