算法学习_排序

来源:互联网 发布:淘宝中和银座瑞士名表 编辑:程序博客网 时间:2024/05/20 04:11

 

插入排序

 

  假定集合有序,待插入集合新值与集合进行比较,寻找合理位置,如果找到,合理位置之后的元素顺序向后面移动一位,新元素插入到寻找的位置。插入排序是效率很差的一种排序,最差情况下集合为逆序,每插入一个元素,就要将原有序集合全部移动,存在大量的比较和负值操作,时间复杂度为O(n2)

 

合并排序

 

   将一个集合递归分解为一个个小的集合,最终分解成单元素的集合,集合放到堆空间中,在递归调用函数的时候,只需要传递集合的内存句柄,在递归层数过多的情况下,临时的栈空间开辟较多,合并排序操作大多在临时空间中进行的,每次递归子程序结束之后,结果都会在原集合中表现出来,合并的粒度标记通过递归来实现,时间复杂度为O(nlogn).

堆排序

   堆排序可以使用在线性结构上面,此算法有3个基本的子程序:

   <1> MAX-HEAPIFY(A,i)使得以i为根的子树成为最大堆。

   <2>BUILD-MAX-HEAP(A)使序列A构件为最大堆

   <3>HEAPSORT(A) 堆排序

快速排序

 

 

原创粉丝点击