第八章学习小结
第八章:排序
排序的稳定性:两次相同排序后结果相同则稳定,否则不稳定。稳不稳定没有好坏之分,只有适不适合解决问题之分。
算法效率因素:空间+时间(对比+移动交换)
插入排序
1.插入排序(类似冒泡排序):稳定,时间O(n^2)(两个for循环),空间O(1), 数据多时不适合(比较和移动太复杂)
2.折半插入排序: 稳定,时间O(n^2)(比较少log2n只和数据量有关但移动两个for循环),空间O(1),适合无序,数据多时
交换排序
1.冒泡排序:类似插入排序,劣与插入排序(移动更多)
2.快速排序(递归):大概是选定一个标值存着,左边指针low,右边指针high,在两者不相撞时,先high开始往左,小于标值则和标值交换,到从low往右,大于标值则和标值换,循环直到结束
不稳定,时间O(nlog2n),空间(log2n)或O(n)(要用到栈空间),适合无序,数据多时。主要用顺序存储,因为要low,high定位
3.堆排序:两步骤:1.建初堆:根节点比左右孩子大的树
2:调整堆:每次把最大调整到根节点后按从下往上,从右往左交换每个节点。
还有好多排序方法,都优于冒泡排序,但算法复杂所以平时主要用快速排序和冒泡排序。