博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序
阅读量:6844 次
发布时间:2019-06-26

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

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

 

冒泡排序动画演示

 

附录,我自己运行的结果:

public class maopao {    public static void main(String args[])    {        int n=5;        int[] x = { 6, 2, 4, 1, 5, 9 };        bubble_sort(x);        for(int i=1;i<=n;i++)        {            System.out.print(" x["+i+"]="+x[i]);        }            }    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;                }            }        }    }}

转载于:https://www.cnblogs.com/zzzzw/p/4593391.html

你可能感兴趣的文章
PHP require class
查看>>
将多层文件夹加入到XCode工程中
查看>>
简易解说拉格朗日对偶(Lagrange duality)
查看>>
将unitest整合和python发送测试报告
查看>>
C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
查看>>
12组免费的CSS3按钮强力推荐
查看>>
匿名黑客称苹果iCloud将成下一个攻击目标
查看>>
蓝翔技校被指攻击谷歌 百度遭质疑
查看>>
一起谈.NET技术,ASP.NET MVC中对数据进行排序的方法
查看>>
艾伟_转载:[一步一步MVC]第六回:什么是MVC(上)?
查看>>
java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)
查看>>
MySQL,Oracle,PostgreSQL,DB2,mongoDB,Hive, SAP HANA 数据库web维护客户端管理工具
查看>>
Ajax + PHP实现域名查询系统
查看>>
Win7 JBOSS的下载安装、环境变量配置以及部署
查看>>
Kali系列之multi/handler(渗透win7)
查看>>
SSIS 实用表达式部分总结
查看>>
Apache kylin 入门
查看>>
django 快速实现文件上传
查看>>
SharePoint2007 管理中心TimerJob”计时器作业定义”页面报错
查看>>
四则运算3.2
查看>>