首页 > 编程语言 > 详细

记录一些重要算法的思路(持续整理)

时间:2015-07-10 02:19:01      阅读:309      评论:0      收藏:0      [点我收藏+]

基于内容精简、重点突出、便于理解的这些优点,选择中文伪码来记录。

?

  • 二分查找
当数组有元素时(left<=right)循环:
???? ? ? ?若查找值小于中位数,则查找左半边数组;
???? ? ? ?若查找值大于中位数,则查找右半边数组;
? ? ? ? ? 否则查找值等于中位数,即找到。
返回未找到。
_______________________________________________
?
? ??
  • 归并排序
当数组多于一个元素时(left<right):
???? ? ? ?递归排序左半边(含中间);
???? ? ? ?递归排序右半边;
???? ? ? ?合并两边。

_______________________________________________

?

?

  • 快速排序
当数组多于一个元素时(left<right):
???? ? ? ?q = Partion();
???? ? ? ?递归排序q左边;
???? ? ? ?递归排序q右边。
?
Partion:
? ? ? ? ?选择第一个记录作为枢轴,值为key;
? ? ? ? ?当left<right时循环:
? ????????????? ? ?right从右到左,直至比key小时停下,并设置a[left]?=?a[right]
? ????????????? ? ?left从左到右,直至比key大时停下,并设置a[right]?=?a[left]
???? ????a[left]?= key
???? ? ??返回left

_______________________________________________

?
?
  • 堆排序
从最后一个非叶节点(length/2-1往前循环:
???? ? ??全范围lengthAdjustHeap调整当前节点
由后往前循环(i=length-1;i>0;--i):
???? ? ? 当前节点与根节点交换;
???? ? ? 在范围i内,AdjustHeap调整根节点
?
AdjustHeap:
???? ? ? 若当前节点有孩子,循环:
???? ???? ????? ? ?选择一个较大的孩子;
???? ???? ????? ? ?若该孩子比当前节点大,则交换并将当前节点设为该孩子,否则结束
_______________________________________________

记录一些重要算法的思路(持续整理)

原文:http://xingbinice.iteye.com/blog/2225540

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!