冒泡排序

Posted chrisghb8812

tags:

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

public class BubbleSort
    {

        /*
         * 冒泡排序
         *
         * 参数说明:
         *     a -- 待排序的数组
         *     n -- 数组的长度
         */
        public static void bubbleSort1(int[] a, int n)
        {
            int i, j;

            for (i = n - 1; i > 0; i--)
            {
                // 将a[0...i]中最大的数据放在末尾
                for (j = 0; j < i; j++)
                {

                    if (a[j] > a[j + 1])
                    {
                        // 交换a[j]和a[j+1]
                        int tmp = a[j];
                        a[j] = a[j + 1];
                        a[j + 1] = tmp;
                    }
                }
            }
        }

        /*
         * 冒泡排序(改进版)
         *
         * 参数说明:
         *     a -- 待排序的数组
         *     n -- 数组的长度
         */
        public static void bubbleSort2(int[] a, int n)
        {
            int i, j;
            int flag;                 // 标记

            for (i = n - 1; i > 0; i--)
            {

                flag = 0;            // 初始化标记为0
                                     // 将a[0...i]中最大的数据放在末尾
                for (j = 0; j < i; j++)
                {
                    if (a[j] > a[j + 1])
                    {
                        // 交换a[j]和a[j+1]
                        int tmp = a[j];
                        a[j] = a[j + 1];
                        a[j + 1] = tmp;

                        flag = 1;    // 若发生交换,则设标记为1
                    }
                }

                if (flag == 0)
                    break;            // 若没发生交换,则说明数列已有序。
            }
        }

        public static void Main(String[] args)
        {
            int i;
            int[] a = { 10, 20, 30, 40, 50, 60 };

            Console.WriteLine("before sort:");
            for (i = 0; i < a.Length; i++)
                Console.WriteLine("%d ", a[i]);
            Console.WriteLine("
");

            //bubbleSort1(a, a.Length);
            bubbleSort2(a, a.Length);

            //Console.WriteLine("after  sort:");
            //for (i = 0; i < a.Length; i++)
            //    Console.WriteLine("%d ", a[i]);
            //Console.WriteLine("
");
        }
    }

 

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

java冒泡排序法代码

python代码实现鸡尾酒排序(双向冒泡排序)

冒泡排序python代码

视频+图文+动画详解冒泡排序

交换排序(冒泡排序快速排序的算法思想及代码实现)

C语言冒泡排序。