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

冒泡排序Vs直接选择排序

时间:2014-10-10 18:40:44      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:算法

             什么是排序?为什么要使用排序?其实我们生活中处处都用到了排序,拿字典来说,现在,我们要在字典中查找某个字(已经知道这个字的读音),首先,我们需要根据这个字的读音,找到它所所在目录中的位置,然后根据这个字的所在页数准确的定位到这个字的位置。

       在查找字的过程中,我们注意到了这样的字眼,根据读音找到。。。位置,根据页数定位这个字的位置,我们在无意识的情况下,使用到了排序和查找,字典的编写者对整部字典进行了排序,我们的工作就是根据字典的排序方法查找某个记录。下面详细的介绍排序的相关内容。

        排序是一个处理数据的过程,它总是和查找共同出现,因为排序的目的就是方便查找数据,排序的好坏决定了查找的效率。

        排序的方法有很多种,这里我选取了两个较为简单且有代表性的两种排序方法进行比较。冒泡排序和直接选择排序。下面我将从排序的方法、时间复杂度、稳定性和特点等几方面来介绍。

        基本过程:

        冒泡排序的过程就是在一个集合中,依次将每两个数据进行比较,然后把较大的数据放到后边,这样,每个过程结束后,最后一个数据总是最大的。冒泡排序的过程图示:

 bubuko.com,布布扣

        直接选择排序的过程就是,把一个集合中的最小的数据放到一个已经排好顺序的序列中,它和冒泡排序排列次序刚好相反,是从第一个数据开始排列的。直接选择排序图示:

 bubuko.com,布布扣

时间复杂度:

        可以看得出来,冒泡排序使用到了两层循环,它的时间复杂度是O(n^2);直接选择排序也是用到了两层循环,它的时间复杂度也是O(n^2)。

算法稳定性:

        稳定性就是一个数据集合中,假设有两个数据相等,排序结束后,如果两个数据的前后位置发生变化,则这个排序方法是不稳定的。冒泡排序过程总,只有连续的两个数据会交换数据,也就是说,两个相同的数据是不会发生位置交换的,所以冒泡排序是稳定的排序方法。直接选择排序过程中,任何位置的两个数据都有可以交换位置,所以,直接选择排序是不稳定的排序方法。

 

算法

平均时间复杂度

最坏时间复杂度

空间复杂度

稳定性

冒泡排序

O(n^2)

O(n^2)

O(1)

稳定

直接选择排序

O(n^2)

O(n^2)

O(1)

不稳定

 

        在所有的算法中,没有哪一种是最优的。就时间复杂度而言冒泡排序和直接选择排序,时间代价都是比较大O(n^2);就带排序数据而言,如果初始序列已经基本有序,则使用冒泡排序法更好,它的时间复杂度接近O(n);在实际情况中,我们应该根据不同的情况选择不同的算法,如果有必要,可以同时将多种算法结合起来使用。

冒泡排序Vs直接选择排序

标签:算法

原文地址:http://blog.csdn.net/u010942465/article/details/39963699

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