算法分析

原创 2004年10月20日 14:03:00

写程序归根到底就是做两件事:算法实现和错误处理.
这里列举一些常用的算法并给以简单的分析,希望能有一定的参考价值.

1.判断一个正整数是否事2的幂
C实现:
int is2Power(unsigned int x){
     return (x &(x-1))==0;
}

Java实现:
boolean is2Power(int x){
     return (x &(x-1))==0;
}

两者实现并没有多大区别,x&(x-1)就是把x的最右边的一个1位变为0位,如果x为2的幂
那么就只有一个位为1,返回的结果就是0了.
注意:x必须为正整数,0也不可以.

2.判断一个正整数是否事2n-1的形式
和上一个问题没有什么区别,这里只给出Java的实现.
boolean is2PowerOne(int x){
     return x &(x+1);
}

3.判断一个正整数是否事2j-2k的形式,j>k>=0.
Java实现:
boolean is2PowerJK(int x){
     return (((x|(x-1))+1)&x)==0;
}

首先要明白要满足2j-2k的形式,x中为1的位必须连续,也就是这个样子的 00...01..10...0,明白了这一点就
好办了,x-1就是改变最右边的1位以及后面的,也就是10...0变成01...1,高位不变.
x|(x-1)使得x的尾0都变成了1,最后的形式是:000...011..1
这个已经是2n-1的形式了,只要套用 x&(x+1)公式就可以了.
当j=k+1时,就变成了公式1了.
当k=0时,就变成公式2了.

4.求一个整数的绝对值.
Java实现:
int abs(int x){
    return x-((x<<1)&(x>>31));
}

当n为0时:x<<1=0,x>>31=0,结果为0.
当n为正:x>>31为0,结果为x.
当n为负:x>>31为全1,也就是-1,x-(x<<1)等于-n
不过注意的是:当Integer.MIN_VALUE<n<-230该公式不行,因为这个时候x<<1溢出了.
当x为Integer.MIN_VALUE时,返回Integer.MIN_VALUE,这个是对的.
有关移位操作可以参考:http://blog.csdn.net/treeroot/archive/2004/10/20/144201.aspx

数据结构与算法分析:C语言描述(pdf+源码+答案)

书    名:数据结构与算法分析:C语言描述                   作    者:Mark Allen Weiss (维斯)                    ISBN   :978...
  • Tracyhuixingfu
  • Tracyhuixingfu
  • 2014年11月28日 19:21
  • 2248

《数据结构与算法分析C++描述》Mark.Allen.Weiss.pdf

下载地址:网盘下载 内容简介 编辑 此书是作者1996年出版“Algorithm,Data Structures,and Problem Solving with...
  • cf406061841
  • cf406061841
  • 2017年05月27日 19:17
  • 1045

贪心算法(算法分析与设计)

1.活动安排问题 使剩余安排时间极大化 #include #include #include using namespace std; struct Node { int s; int f; };...
  • ChinaJane163
  • ChinaJane163
  • 2015年10月07日 00:02
  • 843

数据结构与算法分析经典高清珍藏版

数据结构与算法分析经典高清珍藏版 http://download.csdn.net/detail/oyy_ou/5071561
  • wangfei0904306
  • wangfei0904306
  • 2017年02月15日 20:06
  • 231

【算法设计与分析】4、合并排序

/** * 书本:《算法分析与设计》 * 功能:给定线性序列集合中n个元素和一个整数k,1...
  • cutter_point
  • cutter_point
  • 2014年11月16日 18:41
  • 1073

【java版】数据结构与算法分析学习之路【一】前言

一.数据结构和算法概述?【框范围】 基础数据结构主要包括表【数组+链表】、栈、队列【散列表】、树、图、堆。高级数据结构包括伸展树、红黑树、确定性跳跃表、AA树、treap树、k-d树、配对堆...
  • shengmingqijiquan
  • shengmingqijiquan
  • 2016年09月22日 09:48
  • 1387

《数据结构与算法分析》学习笔记

A Practical Introduction to Data Structures and Algorithm Analysis (C++ Edition).
  • u011076940
  • u011076940
  • 2016年08月27日 21:04
  • 4854

数据结构与算法分析 c++描述 读书笔记(1)

开卷有益,多多益善。由于过年期间学习了下python,再加上之后又在看图像处理和机器学习的东西,c++几乎荒废了,所以抽空就拜读下这本经典的书。网上找的书皮: 把博客当读书笔记了,不然曾经写的好几本的...
  • y277an
  • y277an
  • 2016年04月28日 19:33
  • 456

浅谈数据结构与算法分析学习及如何进行算法分析

前言都说数据结构与算法分析是程序员的内功,想要理解计算机世界就不能不懂点数据结构与算法,然而这也备受争议,因为大多数的业务需求都用不上数据结构与算法,又或者说已经有封装好的库可以直接调用,例如Java...
  • github_37022917
  • github_37022917
  • 2017年01月26日 21:54
  • 1825

研究生课程 算法分析笔记

算法分析有四大经典的思想,分治法、贪心法、动态规划,最后一个是回溯法和分支限界法,后面会针对性都出一篇博客总结。这篇博文先总结一下除了四大算法之外的,杂七杂八的笔记。...
  • zhangxb35
  • zhangxb35
  • 2016年12月29日 16:52
  • 427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法分析
举报原因:
原因补充:

(最多只允许输入30个字)