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

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

经典排序算法 - 冒泡排序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();        }

 

冒泡排序动画演示

 

转载于:https://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html

你可能感兴趣的文章
mysql学习总结一:mysql的安装,介绍,基本命令操作
查看>>
TCP/IP源码学习(48)——socket与VFS的关联(2)
查看>>
LAMP的实现
查看>>
PostgreSQL 时间与Unix时间戳
查看>>
Redhat 6.2 Linux修改yum源免费使用CentOS源
查看>>
spring - 自定义标签-扩展schema过程
查看>>
vim 加密功能
查看>>
http://blog.51cto.com/lookingdream/1684321
查看>>
linux生成https的key和csr文件
查看>>
AngulatJS多个控制器内数据共享
查看>>
NASA选中三支团队研究前沿无人车、无人机技术
查看>>
kernel panic - not syncing : fatal exception(linux系统启动错误)
查看>>
MySQL优化之联合索引
查看>>
python实时获取鼠标在桌面的位置
查看>>
06: Zabbix基础 、 Zabbix监控实战 、 Zabbix报警机制
查看>>
TCP/IP学习(36)——IP包的发送流程(3)
查看>>
zabbix3.4 监控 DELL 硬件模板 | 中文汉化
查看>>
linu计划任务学习
查看>>
修改linux终端的提示字符
查看>>
HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
查看>>