1.冒泡排序
1.1冒泡排序实现方法
冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。双重循环时间 O(n^2)。
1.2冒泡排序实现代码
1.3冒泡排序特点
1、空间复杂度低,时间复杂度高
2、升序排序中每一轮比较会把最大的数下沉到最低,所以相互比较的次数每一轮会比前一轮少一次。
3、是一种稳定的排序算法
2.选择排序
2.1选择排序实现方法
选择排序(Select Sort) 是直观的排序,通过确定一个 Key 最大或最小值,再从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为 O(n^2)
2.2选择排序实现代码
2.3选择排序特点
选择排序是一种简单的排序算法,适用于数据量较小的情况,因为根据时间复杂度分析,数据量越大,选择排序所花费的时间按照平方倍数增长,会非常慢。 但是选择排序也有它的优势,选择排序的优势就是思维逻辑简单。 选择排序还有个特点,就是不论数组的顺序是排好序或者是乱序的,选择排序都需要花费一样的时间来计算。 比如,利用选择排序对数组 {1,2,3,4,5}和数组 {3,1,4,2,5}排序所花费的时间是一样的。
3.快速排序
3.1快速排序实现方法
快速排序(QuickSort)是排除稳定性因素后最常用的排序。给看官介绍两种使用方法,一种值直接在我文件 stdlib.h 头文件中的 qsort 函数实现是和正常写代码一样的。通过使用qsort(数组名,长度,sizeof(第一个数长度),compInc/comoDec) 进行实现数组的排序。后面的是通过递归调用的形式。
3.2快速排序实现代码
3.3快速排序特点
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。
4排序方法的对比
5.总结
三种排序方法中,快速排序的时间复杂度通常是最低的,选择与冒泡排序的时间复杂度相同,所以在使用排序算法时,尽量使用快速排序。