经典排序算法之冒泡排序(Bubble sort)代码

作者:kkun 时间:2021-06-08 06:06:18 

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

冒泡排序动画演示

经典排序算法之冒泡排序(Bubble sort)代码

以上所述是小编给大家介绍的经典排序算法之冒泡排序(Bubble sort)的代码,希望对大家有所帮助!

标签:冒泡,排序,算法
0
投稿

猜你喜欢

  • 在Maven下代理服务器设定的方式

    2023-10-15 02:17:13
  • java动态线程池的简单实现思路

    2023-10-18 15:53:46
  • java日期时间操作工具类

    2022-09-03 13:04:58
  • springboot 使用QQ邮箱发送邮件的操作方法

    2022-03-03 14:36:22
  • Java 反射(Reflect)详解

    2022-09-27 08:34:44
  • 解决线程池中ThreadGroup的坑

    2023-08-24 00:13:47
  • Logback 使用TurboFilter实现日志级别等内容的动态修改操作

    2022-06-10 04:17:53
  • Spring的异常重试框架Spring Retry简单配置操作

    2023-11-25 18:27:35
  • C#获取ListView鼠标下的Item实例

    2023-04-29 11:45:10
  • java selenium 操作浏览器实例

    2023-04-13 17:57:13
  • java实现简单单链表

    2023-10-30 09:45:46
  • Spring AOP 后置通知修改响应httpstatus方式

    2022-06-05 06:54:26
  • C#使用is、as关键字以及显式强转实现引用类型转换

    2023-01-29 16:15:27
  • 引入SpringCloud-gateway报错的解决方案

    2022-04-02 21:47:17
  • Java关于桶排序的知识点总结

    2023-12-06 03:18:04
  • Spring实例化bean的四种方式详解

    2022-01-19 23:09:15
  • Windows编写jar启动脚本和关闭脚本的操作方法

    2021-05-28 04:36:58
  • 初步了解javafx

    2021-09-30 16:20:11
  • SpringCloud整合Nacos实现流程详解

    2021-07-04 11:11:09
  • spring多数据源配置实现方法实例分析

    2023-06-06 22:15:56
  • asp之家 软件编程 m.aspxhome.com