Java 冒泡排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 冒泡排序相关的知识,希望对你有一定的参考价值。

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

这道题 好多面试都有问道。或者是笔试又或者是机试。所以还是好好看看的好。

以上是关于Java 冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序

Java代码实现—冒泡排序

Java冒泡排序

java冒泡排序和快速排序代码

冒泡排序