`
gogole_09
  • 浏览: 206978 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据结构与算法分析 --几种常用的算法

阅读更多
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语言描述(原书第2版)课后习题参考答案

    数据结构与算法分析是计算机科学中的核心课程,它主要研究如何高效地组织和管理数据,以便于进行快速的检索、插入、删除等操作。C语言因其底层特性,常被用于实现这些复杂的数据结构和算法,使得理解更加直观,性能...

    《数据结构与算法分析C++描述第三版》答案

    根据提供的信息,《数据结构与算法分析C++描述第三版》答案这一资料主要涵盖了该教材中的大量练习题解答。为了更好地理解和应用数据结构与算法的知识,下面将从几个方面对该资料涉及的重要知识点进行深入探讨。 ###...

    数据结构算法与应用-C++语言描述_Sahni著

    《数据结构算法与应用-C++语言描述》这本书,由Sahni著,旨在帮助读者深入理解这些核心概念,并通过C++实践来提升技能。 本书可能涵盖了以下几个主要的知识点: 1. **基础数据结构**:包括数组、链表、栈、队列、...

    数据结构算法与应用-C++语言描述

    本资料集“数据结构算法与应用-C++语言描述”专注于讲解如何在C++环境中实现各种数据结构和算法,并提供了相应的解答,旨在帮助学习者深入理解和应用这些理论知识。 首先,我们从基本的数据结构开始。数据结构主要...

    研究型大学创新性“数据结构与算法分析”课程建设.pdf

    “数据结构与算法分析”作为计算机专业核心课程的地位及重要性: 计算机专业的学生不论将来从事硬件还是软件方向的工作,程序设计和算法设计与分析的能力都至关重要。随着计算机应用领域的扩大和软硬件的发展,...

    数据结构与算法分析课后习题

    在第一章引言中提到的“数据结构与算法分析”,说明了本材料是关于数据结构和算法的基本概念和分析方法。数据结构是指计算机存储、组织数据的方式,使得数据可以高效地被访问和修改。而算法则是解决特定问题的一系列...

    四川大学计算机学院游洪跃老师数据结构与算法分析课程的平时作业习题6-图.rar

    标题中的“数据结构与算法分析”是一门计算机科学的核心课程,主要探讨如何高效地存储和处理数据,以及设计和分析解决问题的算法。本课程由四川大学计算机学院的游洪跃老师教授,说明了这是一个高等教育阶段的专业...

    数据结构算法与应用--C++ 语言描述

    在学习“数据结构算法与应用--C++ 语言描述”时,你需要关注以下几个方面: 1. 数据结构的概念和实现:了解每种数据结构的特性和使用场景。 2. C++中的容器和算法:熟悉STL提供的数据结构和算法,学会如何在代码中...

    《数据结构》算法实现与分析 高一凡(第二版)书+源码

    《数据结构》算法实现与分析高一凡(第二版)是一本深入探讨数据结构与算法的书籍,由知名计算机教育专家高一凡编著。这本书是第二版,相较于第一版,可能包含了更多更新的内容和实践案例,以适应不断发展的信息技术...

    数据结构与算法-学生成绩管理(顺序)_C-C++_

    在“数据结构与算法-学生成绩管理(顺序).cpp”这个源代码文件中,我们可以预期会看到以下几个关键部分: 1. **结构体定义**:为了表示学生及其成绩,程序可能会定义一个结构体,如`Student`,包含学生的姓名、学号...

    【数据结构算法与应用-C++语言描述】中文版

    本资源,"数据结构算法与应用-C++语言描述",是山东大学指定的学习教材,现在有中文版供学习者使用,使得理解复杂的概念变得更加容易。 在数据结构方面,本书可能涵盖了以下几个核心主题: 1. **线性数据结构**:...

    数据结构与算法基础.txt

    这些知识点涵盖了数据结构的基本概念、不同类型的结构以及算法的基础定义与分析等。 ### 数据结构基础 #### 1. 数据结构基本概念 数据结构是计算机科学中的一个重要概念,它指的是相互之间存在一种或多种特定关系...

    数据结构与算法-作者Aho

    ### 数据结构与算法-作者Aho #### 书籍概述 《数据结构与算法》是由作者Aho撰写的一部经典计算机科学著作,自上世纪九十年代以来一直是计算机领域中备受推崇的经典教材之一。本书全面介绍了算法的基本概念、设计...

    C++数据结构知识点与经典算法整理

    - **目标**:学习数据结构的目标在于熟悉常用的数据结构类型,理解其内在逻辑关系,掌握在计算机中的存储表示方法,并通过具体案例了解它们的操作算法,进而提高软件设计与编程能力。 2. **数据结构概述**: - **...

    算法与数据结构.pdf

    王厚峰教授在课程中推荐了两本参考书籍,一本是《数据结构》(许卓群),另一本是《数据结构与算法分析(C++版)》。这两本书籍是学习算法与数据结构的宝贵资源,它们涵盖了从基础概念到复杂应用的各个方面,并且...

Global site tag (gtag.js) - Google Analytics