标签分类
当前位置:首页 > 程序设计电子书 > 算法电子书网盘下载
写给大家看的算法书 写给大家看的算法书
swl2018

swl2018 提供上传

资源
16
粉丝
49
喜欢
186
评论
2

    写给大家看的算法书 PDF 高清版

    算法电子书
    • 发布时间:

    给大家带来的一篇关于算法相关的电子书资源,介绍了关于算法书、算法方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小38..3 MB,杉浦编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.2,更多相关的学习资源可以参阅 程序设计电子书、等栏目。

  • 写给大家看的算法书 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1Dr8V2Xi9v8xyPfNPTOs4zw
  • 分享码:mrs2
  • 写给大家看的算法书 PDF

    算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词。其实,算法在日常生活中随处可见。做饭用的菜谱是一种算法、查字典的方法是一种算法、给期中考试分数排名也用到了算法。事实上,算法可以说是这个信息爆炸的时代所依存的重要基石之一。

    写给大家看的算法书》对于理解信息处理的基础——算法而言,是一本非常优秀的入门读物。作者采用大量生动的类比,配合简洁易懂的配图,深入浅出地讲解算法,极大地拉近了读者与算法的距离。通读全书,读者可以了解到计算机编程与算法的基本理念,也能对简单常用的算法有一个大概的理解。

    适读人群 :将高大上的算法以明白易懂的方式说透,是本书最大特色,适合与数据相关的从业人员学习、了解。

    目录

    • 第1 章 什么是算法 1
    • 第2 章 变量和数组 13
    • 第3章 数据结构 55
    • 第4章 学习算法基础 83
    • 第5 章 排序算法 109
    • 第6 章 搜索算法 131
    • 第7 章 其他算法 147
    • 第8 章 算法和计算机 159

    上一篇:Python与数据挖掘  下一篇:精通Android Studio

    展开 +

    收起 -

    码小辫二维码
     

    算法相关电子书
    学习笔记
    网友NO.498117

    Java常用加密算法实例总结

    本文实例总结了Java常用加密算法。分享给大家供大家参考,具体如下: 项目中第一次深入地了解到加密算法的使用,现第一阶段结束,将使用到的加密算法和大家分享一下: 首先还是先给大家普及一下常用加密算法的基础知识 基本的单向加密算法 BASE64 严格地说,属于编码格式,而非加密算法 MD5 (Message Digest algorithm 5,信息摘要算法) SHA (Secure Hash Algorithm,安全散列算法) 复杂的加密算法 RSA (算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman) DES/3DES (Digital Signature Algorithm,数字签名) 国密算法 SM2/SM4 (是由国家密码管理局编制的一种商用密码分组标准对称算法) 使用方法: base64 public static byte[] encode2Base64(byte[] bytes) { byte[] bts = Base64.encodeBase64(bytes); return bts;}public static byte[] decode2Base64(String str) { byte[] bts = Base64.decodeBase64(str); return bts;} MD5 public static String md5(String str) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); return new String(digest.digest(str.getBytes())); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return "";} SHA-1 public static byte[] sha1ToBytes(String str) { try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); byte[] bts = digest.digest(str.getBytes()); return bts; } catch (Exception e) { e.printStackTrace(); } return null;} DES/3DES public static byte[] encryptMode(S……

    网友NO.115270

    Python3最长回文子串算法示例

    本文实例讲述了Python3最长回文子串算法。分享给大家供大家参考,具体如下: 1. 暴力法 思路:对每一个子串判断是否回文 class Solution: def longestPalindrome(self, s): """ :type s: str :rtype: str """ if len(s) == 1: return s re = s[0] for i in range(0,len(s)-1): for j in range(i+1,len(s)): sta = i end = j flag = True while sta end: if s[sta] != s[end]: flag = False break sta += 1 end -= 1 if flag and j-i+1 len(re): re = s[i:j+1] return re 提交结果:超出时间限制 2. 动态规划法 思路: m[i][j]标记从第i个字符到第j个字符构成的子串是否回文,若回文值为True,否则为False. 初始状态 s[i][i] == True,其余值为False. 当 s[i] == s[j] and m[i+1][j-1] == True 时,m[i][j] = True class Solution: def longestPalindrome(self, s): """ :type s: str :rtype: str """ k = len(s) matrix = [[False for i in range(k)] for j in range(k)] re = s[0:1] for i in range(k): for j in range(k): if i==j: matrix[i][j] = True for t in range(1,len(s)): #分别考虑长度为2~len-1的子串(长串依赖短串的二维数组值) for i in range(k): j = i+t if j = k: break if i+1 = j-1 and matrix[i+1][j-1]==True and s[i] == s[j]: matrix[i][j] = True if t+1 len(re): re = s[i:j+1] elif i+1 == j and j-1 == i and s[i] == s[j]: matrix[i][j] = True if t+1 len(re): re = s[i:j+1] return re 执行用时:8612 ms 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《……

    网友NO.221893

    Java排序算法之堆排思想及代码实现

    在介绍堆排序前,我们需要了解一下一种数据结构 —— 顶堆。 什么是顶堆? 它是一颗完全二叉树,顶堆有大顶堆和小顶堆两种。所谓大顶堆就是在这颗完全二叉树中,任何一颗子树都满足:父结点的值 孩子结点的值;小顶堆则相反。 如图: 什么是堆排序(Heapsort)? 利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。 现在给我们一个无序数组,我们将其从小到大排序,使用堆排序的实现步骤和思想如下: 1.让这个数组变成一个大根堆 2.将最后一个位置和堆顶位置作交换 3.将堆的大小进行 -1 操作 4.将当前的堆变成一个大顶堆 5.回到2 看起来似乎很抽象,那我们现在用一个例子进行讲解:假设一个整型数组arr = {2, 1, 3, 6, 0, 5} 1.将一个无序数组变成一个大顶堆存储 如果使用完全二叉树进行存储数组,任意下标为index的结点的父结点的下标应该是(index-1)/2,其孩子结点的下标应分别为:(index * 2 + 1) 和 (index * 2 + 2) 。我们使用该结论创建一个大顶堆: 首先我们假设0位置上的数已经排好,将其放在这棵二叉树的根位置,创建一个int类型变量 i 记录当前指向的数组的下标,初始化值为1。 设置一个index初始化值 = i,将index和(index-1)/2位置的数进行比较,也就是……

    网友NO.932324

    JavaScript折半查找(二分查找)算法原理与实现方法示例

    本文实例讲述了JavaScript折半查找(二分查找)算法原理与实现方法。分享给大家供大家参考,具体如下: 一、问题描述: 在一个升序数组中,使用折半查找得到要查询的值的索引位置。如: var a=[1,2,3,4,5,6,7,8,9];search(a,3);//返回2search(a,1);//左边界,返回0search(a,9);//右边界,返回8search(a,0);//比最小的值还小,返回"您查找的数值不存在"search(a,10);//比最大的值还大,返回"您查找的数值不存在" 注: 折半查找必须在有序数组中才有效,无序的数组不能实现查找功能。比如:在 [10,5,6,7,8,9,20] 中查找10,中间索引位置的值为7,比较得出7比10小,因而应该在右子数组中查找,实际上不可能找到10; 二、我的实现 function search(arr,num) { var l=arr.length; var left=0; var right=l-1; var center=Math.floor((left+right)/2); while(left=l-1right=0){ if (arr[center]==num) return center; if (left==right) return "您查找的数不存在"; if (arr[center]num) { right=center-1; center=Math.floor((left+right)/2); }else if (arr[center]num) { left=center+1; center=Math.floor((left+right)/2); } }}var a=[1,2,3,4,5,6,7,8,9];console.log(search(a,-2)); 说明: 1、基本思路: 每次比较,如果数组中间索引位置的值比要查找的值大,就转而在数组中间位置之前的子数组中查找;相反,如果数组中间索引位置的值比要查找的值大,就转而在数组中间位置之后的……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明