package com.base.algorithmanalysis;
/**
* 几种常见的算法
*
* @author google
*
*/
public class Base {
/**
* 针对排序后的序列折半查找策略: 最好的情况是需要查找的元素x是否为居中的元素,如果是,答案就找到了。
* 如果X小于居中元素,采用同样的策略应用于居中元素左边已经排好的子序列。 如果X大于居中元素,则检查右边的元素.
*
* @param ary
* @param target
* @return
*/
public static int binarySearch(int[] ary, int target) {
int low = 0, high = ary.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (ary[mid] < target) {
low = mid + 1;
} else if (ary[mid] > target) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}
/**
* 最大公因数的欧几得算法 计算机连续计算余数直到余数是0为止,最后的非0余数就是最大公因数
*/
public static long gcd(long m, long n) {
while (n != 0) {
long tem = m % n;
m = n;
n = tem;
}
return m;
}
/**
* 求幂操作
*
* @param x
* @param n
* @return
*/
public static long pow(long x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
/**
* 此处递归说明(以x=4,n=2为例) 第一次进来:4%2==0 return pow(x*x,n/2) 【A】 则进入递归
* pow(16,1) ==> n==1,return 16. 向上返回 【A】 则有:4%2==0 return
* pow(x*x,n/2)=16;
*/
if (n % 2 == 0)
return pow(x * x, n / 2);
else
return pow(x * x, n / 2) * x;
}
/**
* 求最大子序列和,数组总和中最大的和,
* 用一临时变量存储当前最大值,再拿数组每个累计与之比较,大的就交换,如果累计的值小,则不处理。
* @param a
* @return
*/
public static int maxSubSum(int[] a) {
int maxSum = 0, thisSum = 0;
for (int j = 0; j < a.length; j++) {
thisSum += a[j];
if (thisSum > maxSum)
maxSum = thisSum;
else if (thisSum < 0)
thisSum = 0;
}
return maxSum;
}
/**
*
* @param args
*/
public static void main(String[] args) {
int[] aIs = { 10,10,10,20,-30,-49,1};
// System.out.println("找到10,在索引" + binarySearch(aIs, 10) + "处");
// System.out.println("15和55的最大公因数是:" + gcd(15, 50));
// System.out.println(pow(4, 2));
//最大子序列之和计算
System.out.println(maxSubSum(aIs));
}
}
分享到:
相关推荐
《数据结构与算法分析--C语言描述》是由Mark Allen Weiss编写的关于数据结构和算法分析的书籍。这本书是英文版本,虽然在描述中提到了对学习C语言的朋友有很大的帮助,但是具体分析的是英文版的内容。 首先,本书的...
《数据结构与算法分析-C语言描述》是一本深入探讨数据结构和算法的书籍,它以C语言为载体,为读者提供了丰富的编程实践。这本教材的编程练习是学习过程中的重要组成部分,旨在帮助读者巩固理论知识,提升实际编程...
在《数据结构与算法分析-C++描述》中,作者详细介绍了以下几种主要的数据结构: 1. **数组(Array)**:数组是一种线性数据结构,其中的元素按照一定的顺序排列,并且可以通过索引访问。数组的实现简单,但是插入和...
"数据结构与算法分析-C语言描述"这个主题涵盖了以下几个关键知识点: 1. **数据结构**:数据结构是组织和存储数据的方式,它决定了数据的操作效率。常见的数据结构包括数组、链表、栈、队列、树(如二叉树、AVL树、...
标题《数据结构与算法分析-java》说明这是一本专注于Java语言的数据结构和算法的教科书。本书由Mark Allen Weiss所著,目的在于通过Java语言来分析和探讨数据结构及算法的原理与应用。根据提供的部分目录内容,本书...
### 数据结构与算法分析C语言描述 #### 一、引言与目的 《数据结构与算法分析C语言描述》第二版是由Mark Allen Weiss所著的一本权威书籍,旨在深入讲解数据结构及其组织方法以及算法分析的基本原理。随着计算机...
### 数据结构与算法分析Java版 #### 一、概述 《数据结构与算法分析Java版》是一本由Robert Lafore撰写的书籍,该书详细介绍了如何利用Java编程语言来实现和操作各种数据结构和算法。全书共分为六个部分,分别涵盖...
主要内容包括栈、队列、链表等基本数据结构以及递归的概念,并详细介绍了几种排序算法的实现方式。 #### 一、基本概念 **1.1 数据结构** - **栈(Stack)**: 栈是一种特殊的线性表,只能在一端进行插入或删除操作...
数据结构与算法分析是计算机科学中的核心课程,它主要研究如何高效地组织和管理数据,以便于进行快速的检索、插入、删除等操作。C语言因其底层特性,常被用于实现这些复杂的数据结构和算法,使得理解更加直观,性能...
### 数据结构与算法分析(Java版):关键知识点解析 #### 一、书籍概述 《数据结构与算法分析(Java版)》是一本由Robert Lafore编写的关于数据结构和算法的专业书籍。该书旨在通过Java语言的具体示例来帮助读者...
### 数据结构与算法分析:C语言描述第二版 #### 知识点概览 1. **数据结构基础知识** - 定义与分类 - 基本操作与实现方式 - 时间复杂度与空间复杂度的概念 2. **算法分析** - 大O表示法 - 最佳、平均与最坏...
根据提供的信息,《数据结构与算法分析—C语言描述》这本书主要涵盖了计算机科学中关于数据结构与算法的关键概念、原理及其实现方式,并提供了基于C语言的解决方案。此书旨在为学习者提供深入理解数据结构与算法的...
### 数据结构与算法分析 第三版 C++ #### 一、概览 《数据结构与算法分析 第三版 C++》是一本深入介绍计算机科学中核心主题——数据结构和算法的经典教材。本书通过C++语言来阐述各种数据结构的实现方法以及相关...
根据提供的信息,《数据结构与算法分析C++描述第三版》答案这一资料主要涵盖了该教材中的大量练习题解答。为了更好地理解和应用数据结构与算法的知识,下面将从几个方面对该资料涉及的重要知识点进行深入探讨。 ###...