算法
过顶擒龙
多读书,常思考,静养德。
展开
-
排序(一)归并、快排、优先队列等(图文详解)
排序(一)初级排序算法选择排序思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 【图例】图中,x轴方向为数组的索引,y轴方向为待排序元素的值。 选择排序有两个很鲜明的特点:运行时间和输入无关。为了找出最转载 2014-05-28 15:18:00 · 1412 阅读 · 0 评论 -
2048 AI 程序算法分析
原文出处: 张洋(@敲代码的张洋) 针对目前火爆的2048游戏,有人实现了一个AI程序,可以以较大概率(高于90%)赢得游戏,并且作者在stackoverflow上简要介绍了AI的算法框架和实现思路。但是这个回答主要集中在启发函数的选取上,对AI用到的核心算法并没有仔细说明。这篇文章将主要分为两个部分,第一部分介绍其中用到的基础算法,即Minimax和Alpha-beta剪枝;第二转载 2014-06-03 13:06:00 · 2044 阅读 · 0 评论 -
分治法-最近距离问题Java实现
分治算法,有很多典型的问题,如最近点问题、线性选择问题、整数划分问题、大整数成绩问题、棋盘覆盖问题、循环赛日程表、二分搜索、Strassen矩阵乘法、汉诺塔等。准备花些时间逐个解决这些问题,并用Java实现,从最近点问题开始。网上找到一些代码,标题如“java 用蛮力法和分治法求解最近对有关问题”,虽然体现了分治,但划分不够彻底,因此我重新对其进行了实现。一、基本思想及策略:原创 2014-08-12 20:38:01 · 10318 阅读 · 5 评论 -
大数问题:求n的阶乘
题目:求100!这看起来是一个很简答的问题,递归解之毫无压力int func(int n){ if(n <= 1) return 1; else return n*func(n-1);}但你会发现,题目真的有这么简单吗,考虑整形数据越界没有?这实际上是一个大数问题!大数怎么表示呢,很直接的,我们会想到用字符串来表示,但表示的过程中还得做阶乘运算,是不是想象的那么复原创 2014-10-21 11:08:41 · 5828 阅读 · 5 评论