1. 算法复杂度
2. 概念解释:
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
不稳定:如果a原本在b前面,而a=b,排序之后a可能会出现在b的后面。
时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规律n的函数。
1. 冒泡排序(bubble sort)
冒泡排序从待排序的一组数的第一个数开始,每次比较相邻的两个数,如果顺序不对就交换位置,一直比较到最后一个数。这样遍历n次,可以得到按照顺序排列的数组。
2. 插入排序(insert sort)
第一个元素可以认为已经排序,从下一个元素开始,依次和前面已经排序完成的元素比较大小,插入到合适的位置,一直到最后一个元素。
3. 选择排序(select sort)
先选择最小的数放在第一位,作为已经排序,然后在未排序的数字中选择次小的数放在第二位,以此类推。
4. 希尔排序(shell sort)
把要排序的数组依照一定的间隔分成若干个子序列, 然后比较对应的子序列的数值并且交换位置,直到最后间隔为1.
5. 归并排序(merge sort)
从序列第一个元素开始,将序列每相邻的两个数字比较大小并排序,形成n/2个序列,排序后每个序列包含两个元素,将上述序列再次进行归并,形成n/4个序列,每个序列包含四个元素,重复以上步骤,直到所有元素排序完毕。
6. 快速排序(quick sort)
从序列中挑出一个元素,作为基准(base),把剩余的元素小于基准的放在基准的左边,大于基准的放在基准的右边,通过递归操作,不断调用quicksort,选择新的基准,最后得到排好的序列。
7. 堆排序(heap sort)
8. 计数排序(counting sort)
9. 桶排序(bucket sort)
10. 基数排序(radix sort)