码迷,mamicode.com
首页 > 其他好文 > 详细

交换排序

时间:2014-09-14 16:41:17      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   ar   strong   for   数据   

1 交换排序基本思想

交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

应用交换排序基本思想的主要排序方法有:冒泡排序(Bubble sort)和快速排序(Quick sort)。

2 冒泡排序

2.1  冒泡排序思想

第一趟排序:首先将第一个记录的关键字和第二个记录的关键字比较,若为逆序,则将两个记录交换之,然后比较第二个和第三个的关键字。以此类推,直至第n-1个记录和第n个记录关键字比较为止。该过程为第一趟排序,使得最大的关键字排到了最后面。第二趟排序:对前n-1个记录进行相同操作,完成后使得次大的关键字排在n-1位置上。以此类推,进行第三、四次排序直到排序结束。判断排序结束条件是:在一趟排序过程中没有发生过交换记录的操作。一般第i趟排序是从第1个元素到(n-i+1)个记录依次比较相邻两个记录关键字,并在逆序时交换记录。

总结便是:共比较多少趟,每趟比较多少次。一个两重循环。

2.2 冒泡排序算法实现

bubuko.com,布布扣
public static void bubbleSort(int a[])
    {
        int lenth = a.length;
        int temp;
        //共比较lenth-1轮
        for (int i = 0; i < lenth - 1; i++)
        {
            //每轮比较length-1-j次
            for (int j = 0; j < lenth - 1 - i; j++)
            {
                if (a[j] > a[j + 1])
                {
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    }
View Code

2.3 算法效率分析

最好情况:初始序列为正序序列,只需进行一次排序,在此过程中进行n-1次比较,不移动数据。

最差情况:初始序列为逆序序列,需要进行n-1趟排序,需要进行内n(n-1)/2次比较,并且移动数据,每次比较都必须移动记录三次来达到交换记录位置。因此总的时间复杂度为O(n2)。

冒泡排序是就地排序,是稳定的。

 

交换排序

标签:style   blog   http   color   os   ar   strong   for   数据   

原文地址:http://www.cnblogs.com/qianwen/p/3971180.html

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