排序算法小结

本文总结了常见的几种排序算法,包括快速排序、冒泡排序、选择排序(堆排序)、插入排序以及归并排序。重点介绍了快速排序的分治思想和堆排序的建立与调整过程,通过代码实现加深理解。
摘要由CSDN通过智能技术生成

网上关于排序算法的总结太多了,这篇文章就写得不错。

http://m.blog.csdn.net/blog/likaiwalkman/23713373

经典就是经典,个人觉得这些经典的算法被反复研究几十遍都不为过。同时也参考了很经典的书籍《数据结构与算法分析——C语言描述》,温故而知新,每次回头看这些算法的时候都为其中博大精深的思想所折服,呵呵,不扯了。这里只贴出一份用代码敲出来的各个排序算法,纯粹是想练一下手。主要关注快排和堆排序。


交换排序


快速排序

快排的算法思想很精妙,经常在俩指针问题中用到。

假设待排序的元素个数为n,分别存放在数组a[1,…,n]中,令第一个元素为参考元素(称为枢纽元,pivot)pivot=a[1],初始时,i=1j=n,按照以下方法操作:

(1)    从第j个元素开始向前依次将每个元素与枢纽元pivot比较。如果当前元素大于等于pivot,则比较前一个元素与pivot,即比较a[j-1]pivot;否则,将当前元素移动到第i个位置,并转到步骤(2)

(2)    从第i个元素开始向后依次将每个元素与枢纽元pivot比较。如果当前元素小于pivot,则比较后一个元素与pivot,即比较a[i+1]pivot;否则,将当前元素移动到第j个位置,并转到步骤(3)

(3)    重复执行(1)(2),直到出现i>=j,将元素移动到a[i]中。此时,整个元素序列被划分成两个部分,第i个位置之前的元素都小于a[i],第i个位置后的元素都大于等于

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值