时间复杂度:一个算法执行所耗费的时间。
空间复杂度:运行完一个程序所需内存的大小。
一、快速排序
思路:
选择数组中间数作为基数,并从数组中取出此基数;
准备两个数组容器,遍历数组,逐个与基数比对,较小的放左边容器,较大的放右边容器;
递归处理两个容器的元素,并将处理后的数据与基数按大小合并成一个数组,返回。
二、冒泡排序
思路:
比较相邻的元素,第一个比第二个大,就交换它们;
对每组相邻的元素做同样的工作,除了最后一个;
重复以上步骤,直到排序完成。
改进版本:
思路:传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。
动图演示:
三、选择排序
思路:
在未排序的数组中找到最小的元素,存放到排序序列的起始位置
再从剩余未排序的元素中继续寻找最小元素,然后放到已排序列表末尾。
重复上述步骤直到所有元素排序完毕。
选择动态图示: