基础算法
文章平均质量分 70
Waterkong
https://kongdada.github.io/
展开
-
蓝桥杯--分解质因数(BASIC-16)
import java.util.Scanner;import java.math.*;import java.lang.*;public class Main { public static void main(String args[]){ Scanner reader = new Scanner(System.in); int a = reader.nextInt();原创 2017-04-03 16:44:27 · 720 阅读 · 0 评论 -
最大子数组--python实现
题目:给定一个数组,在所有子数组中找到和最大的子数组。 子数组:任意连续个元素。暴力法:计算每一个从 i原创 2017-09-05 15:53:27 · 5920 阅读 · 0 评论 -
丑数--python实现
笔试的时候遇到这个题,当时没做出来。参考资料:大佬传送门,传送门二。题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。 求按从小到大的顺序的第1500个丑数方法一:简单粗暴,分解每一个数,看他的因数是不是只有2,3,5。代码:import timedef findugl原创 2017-10-03 14:08:57 · 6649 阅读 · 1 评论 -
线性筛选素数--python
首先知道:合数一定可以分解为几个素数的积,既然是几个素数,就一定有最小的一个。我们将这个最小素数因子叫最小素因子, 那么是我们可以知道任何一个合数都有唯一的一个最小素因子。我们要做的事就是用素因子筛选出其对应的合数, 然后 标注为合数。筛选出所有的合数,那么剩下的当然是素数。代码如下:# -*-coding:ut原创 2017-09-29 15:40:59 · 1550 阅读 · 0 评论 -
二分查找的两种实现方式(递归和非递归)--python实现
二分查找是我第一次面试时的编程题。非递归方式:# 二分查找非递归实现def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high: mid = (low + high)//2 guess = list[mid] if guess == item : return mid原创 2017-08-07 10:48:04 · 1019 阅读 · 0 评论 -
狄克斯特拉算法,解决加权最短路径问题--python实现
问题:寻找从起点到终点的最短路径。关系图如下:解决思路:建立三张散列表。graph 存储关系图;costs 存储各个节点的开销(开销是指从起点到该节点的最小的权重); parents 存储各个节点的父节点是谁。 创建一个数组用来存储已经处理过的节点 processed.原创 2017-08-13 12:11:29 · 3325 阅读 · 0 评论 -
图的广度优先搜索--python实现
最近在看《算法图解》,第六章中的广度优先搜索中的题目。自己实现一遍,算是做个记录吧。关系网络图如下:目的:找到朋友与朋友的朋友这些人中,谁是 Seller。 大体思路: 首先使用散列表实现图中关系,然后按关系的远近(关系梯度),按顺序将人名字放着一个队列里,最后按队列一个个 判断是不是我们要找的人。结果:找到朋友中的 Seller,或原创 2017-08-12 22:57:29 · 1900 阅读 · 0 评论 -
白话经典算法系列
链接:http://blog.csdn.net/MoreWindows/article/category/859207转载 2017-08-09 23:47:26 · 406 阅读 · 0 评论 -
几种常用的排序算法(二)--python实现
接着上一篇。5. 折半插入排序,时间复杂度O(n*logn),算法稳定。 思路:假设将新元素,插入已经排好序的数组当中,寻找插入位置的时候,采用了二分查找,折半插入排序也叫二分插入排序。 为数组排序时,也是将第一个元素作为已经排好序的数组,循环数组 若元素 arr[i] 小于 arr[i-1] 则为要插入的元素。 利用二原创 2017-08-09 15:24:37 · 410 阅读 · 0 评论 -
几种常用的排序算法(一)--python实现
1. 选择排序,时间复杂度O(n^2),算法不稳定。 思路:(1)循环整个数组 arr,选出最大的数,将它放在空数组 new_arr 的第一个位置。 (2)将刚刚选出的数字从 arr 中去掉。 (3)循环前两个步骤,直到 arr 中没有数字。下面我写了两个函数,当然写在一起也是可以的。# -*- coding:utf原创 2017-08-08 23:06:26 · 773 阅读 · 0 评论 -
栈的应用,括号匹配,后缀表达式计算,有趣的汉诺塔--python实现
三个例子很简单,都来自数据结构课本上的例子。但简单才好玩嘛。第一个:括号匹配,就是找左括号有没有相匹配的右括号,反之亦然。代码:# -*- coding:utf-8 -*-# 栈的应用:括号匹配def MatchPairs(str): arr = list(s) stack = [] for x in range(0, len(arr)): if arr[x] == "(原创 2017-10-04 17:12:13 · 711 阅读 · 0 评论