各种排序算法的思想以及时间复杂度,空间复杂度总结

来源:互联网 发布:软件行业怎么样 编辑:程序博客网 时间:2024/06/05 04:50
1.插入排序:每次待排记录插入前面已经排好队列适当位置①.直接插入排序
直接排序法好情况下(待排序列已按关键码有序)每趟排序只需作1次比较而需要移动元素n元素比较次数n-1移动次数0情况下(逆序)第i元素必须和前面元素进行比较i次移动数i+1总共比较次数 比较多写出来了
总结种稳定排序方法时间复杂度O(n^2)排序过程只要辅助空间空间复杂度O(1)
②.希尔排序
缩小增量排序对直接插入排序种改进;分组插入方法
总结稳定排序方法时间复杂度O(n^1.25)空间复杂度O(1)
2.交换排序①.冒泡排序情况下正序只要比较行了复杂度O(n)情况下逆序要比较n^2次才行复杂度O(n^2)总结:稳定排序方法时间复杂度O(n^2)空间复杂度O(1)当待排序列有序时比较好
②.快速排序
通过趟排序待排记录分割成独立两部分部分记录关键字均比另部分关键字小再分别对部分记录继续进行排序序列有效总结所有同数量级O(nlogn)排序方法快速排序性能种方法待排序列无序时算法时间复杂度O(nlogn)时间复杂度O(n^2)空间复杂度O(nlogn) 3.选择排序①.直接选择排序      和序列初始状态无关 总结:时间复杂度O(n^2)无论好还坏②.堆排序 直接选择排序改进总结:时间复杂度O(nlogn)无论好还坏情况下都O(nlogn) 4.归并排序总结:时间复杂度O(nlogn)空间复杂度O(n) 5.基数排序按组成关键字数位值进行排序分配排序需要进行排码值间比较能够进行排序总结:时间复杂度O(d(n+rd)) 总总结: n比较小时候适合 插入排序选择排序 基本有序时候适合 直接插入排序冒泡排序 n关键字位数较少时适合 链式基数排序 n时候适合 快速排序 堆排序 归并排序 无序时候适合 快速排序 稳定排序:基数排序冒泡排序直接插入排序折半插入排序归并排序
稳定:         快速排序、希尔排序、堆排序、直接选择排序
复杂度O(nlogn):快速排序 堆排序 归并排序 辅助空间(大 次大):归并排序 快速排序 好坏情况样:简单选择(n^2)堆排序(nlogn)归并排序(nlogn) O(n):插入排序 冒泡排序



0 0
原创粉丝点击