`
love19820823
  • 浏览: 934352 次
文章分类
社区版块
存档分类
最新评论

交换排序----冒泡排序 和 快速排序

 
阅读更多

通过对比大小交换对比的元素所得到的排序为交换排序。冒牌排序时很常见的:通过对比相邻元素的大小如果前面的元素比后面的大,则交换两个元素,使得大的元素往后移。
一、冒泡排序

二、快速排序,本文重点
快速排序在一次排序中有两个方向,一个是从尾部向前(逆向),一个是从首部标志(不包括首部标志)向后(正向),正向和逆向不能相遇,相遇则终止{while(low
流程:
取第一个数为标志,逆向比较是否大于等于这个值,大于等于则继续逆向,如果小于则终止逆向,将这个值赋给标志位出(L.key[low]=L.key[high];)。
正向比较low+1开始,比较值是否小于等于标志值,小于等于则继续正向,如果大于标志值则终止正向,将这个值赋给刚才的高位(L.key[high]=L.key[low];)。
当前的low位便是标志位,low之前的数据都是小于等于标志数据的,low之后的数据都是大于等于标志数据的。所以最后将low位的数据置为标志数据(L.key[low]=L.key[0], Key[0]用来保存交换数据)。low便是分开标志位。
递归调用:
通过递归的调用进行快速排序,递归的继续条件是{if(low< high)},也就是终止条件是low>=high。

PS:template 后面跟有 < class T > ,这个编辑器自动把它屏蔽了,可能是怕和css样式格式混淆之类~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics