冒泡排序Vs直接选择排序

             什么是排序?为什么要使用排序?事实上我们生活中处处都用到了排序。拿字典来说,如今,我们要在字典中查找某个字(已经知道这个字的读音),首先。我们须要依据这个字的读音,找到它所所在文件夹中的位置,然后依据这个字的所在页数准确的定位到这个字的位置。

       在查找字的过程中,我们注意到了这种字眼,依据读音找到。

。位置。依据页数定位这个字的位置,我们在无意识的情况下,使用到了排序和查找,字典的编写者对整部字典进行了排序。我们的工作就是依据字典的排序方法查找某个记录。

以下具体的介绍排序的相关内容。

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

        排序的方法有非常多种,这里我选取了两个较为简单且有代表性的两种排序方法进行比較。

冒泡排序和直接选择排序。以下我将从排序的方法、时间复杂度、稳定性和特点等几方面来介绍。

        基本过程:

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

冒泡排序的过程图示:

 

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

 

时间复杂度:

        能够看得出来,冒泡排序使用到了两层循环,它的时间复杂度是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);在实际情况中。我们应该依据不同的情况选择不同的算法。假设有必要,能够同一时候将多种算法结合起来使用。

原文地址:https://www.cnblogs.com/slgkaifa/p/6946286.html