码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序改进算法

时间:2014-12-08 17:37:03      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

先上一段传统的选择排序的代码:

public class SortTest2
{
    public static void main(String[] args)
    {
        int[] a = new int[args.length];
        for(int i=0; i<args.length; i++)
        {
            a[i] = Integer.parseInt(args[i]);
        }

        print(a);
        selectSort(a);
        print(a);

    }

    private static void selectionSort(int[] a)
    {
        int tmp;
        for(int i=0; i<a.length; i++)
        {
            for(int j=i+1; j<array.length; j++)
            {
                if(array[j]<array[j])
                {
                    tmp = array[j];
                    array[j] = array[i];
                    array[i] = tmp;
                }
            }
        }
    }

    private static void print(int[] a)
    {
        for(int i=0; i<a.length; i++)
        {
            System.out.print(a[i] + " ");
        }
        System.out.println();
    }
}

重点看selectionSort方法,当i=0时,依次和后面的每个数字比较,如果有比a[i]更小的数字,则二者交换位置,然后新的a[i]再和后面的数字比较,再有更小的再交换一次。

下面是改进的selectionSort代码:

private static void selectionSort(int[] a)
    {
        int n,tmp;
        for(int i=0; i<a.length; i++)
        {
            n = i;

            for(int j = n+1; j<a.length; j++)
            {
                if(a[j] < a[n])
                {
                    n = j;
                }
            }

            if(n != i)
            {
                tmp = a[n];
                a[n] = a[i];
                a[i] = tmp;
            }
        }
    }

其实没必要每次都交换,可以暂时先记住比a[i]更小的位置n,用a[n]再和后面的数字进行比较,有更小的再记住,一直比较到数组的最后,然后再和a[i]进行交换,可以提高效率。

冒泡排序改进算法

标签:style   blog   io   ar   color   sp   for   on   div   

原文地址:http://www.cnblogs.com/qql1986/p/4151441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!