算法
将平常用的算法尽量完整且通俗易懂的方式讲出来
香菜+
csdn 认证博客专家,游戏开发领域优质创作者,华为云享专家,2021年度华为云年度十佳博主
展开
-
❤《算法入门》之冒泡排序,动图展示过程
今天把冒泡排序补全一下冒泡排序的核心思想就是将剩下的元素中通过交换的方式将最大的交换上来,这种方式有点类似冒泡,所以叫冒泡排序,没啥技巧比较两个相邻的元素,将值大的元素交换到右边举个例子:数组:[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]第一轮:我们遍历数组,两两比较,大的数字后移,在一次循环过后,最大的数值 50 成功放到最后一个位置第二轮:只遍历前面的数组元素,两两比较,大的数字后移,在一次循环过后,最大的数值 48 成功放到倒原创 2021-08-02 12:01:05 · 2842 阅读 · 0 评论 -
筛法求素数
作者:silence、2012年5月17日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。#include #include using namespace std;bool flag[1000];//筛法求素数//n 求n以内的素数 void prime(int n){ memset(flag,true,sizeof(flag));原创 2012-05-17 23:08:13 · 889 阅读 · 0 评论 -
归并排序
作者:silence、2012年6月12日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处算法思想:采用分治法,将数组进行分解成排序的子数组,然后进行合并成排序的数组/* Name: MergeSort Copyright: 2012 Author: silence Date: 06-12-12 14:34 Descr原创 2012-06-12 14:34:57 · 1466 阅读 · 1 评论 -
迪杰斯特拉算法
作者:silence、2012年5月17日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。一 简介 无向图中求单源到其他顶点的最短距离二 重点 通过对路径的迭代更新,求出最小值#include #include #define M 65535using namespace std;//单源到其他点的最短路径 v原创 2012-05-17 23:12:42 · 2351 阅读 · 1 评论 -
常见排序算法的实现(三)——堆排序
常见排序算法的实现(一)——插入排序常见排序算法的实现(二)——shell排序常见排序算法的实现(三)——堆排序常见排序算法的实现(四)——冒泡排序常见排序算法的实现(五)——快速排序常见排序算法的实现(六)——归并排序堆的定义: n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):转载 2012-03-08 21:57:58 · 1205 阅读 · 0 评论 -
图解B+树的插入和删除(一看就懂)
http://hi.baidu.com/halbert_dahai/item/e3eef329985f64899d63d11a图解B+树的插入和删除(一看就懂)一, M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2):图1.1 3阶B+树 (1)根结点只有1个,分支数量范围[2,m]。 (2)除根以外的非叶子结点,每个结点包含分支数转载 2013-07-05 11:23:57 · 6097 阅读 · 0 评论 -
快速排序
快速排序的思想:选第一个元素为标杆元素,大小分站两边,然后进行递归,直至不再可以分区package com;import static java.lang.System.out;public class QuickSort { //a为待排序的数组,s为开始索引,e为结束索引 static int p(int[] a ,int s,int e){ int te原创 2012-04-15 19:56:40 · 987 阅读 · 0 评论 -
杭电1002大整数加法
杭电http://acm.hdu.edu.cn/showproblem.php?pid=1002 输入:21 2112233445566778899 998877665544332211输出:Case 1:1 + 2 = 3Case 2: 112233445566778899 + 998877665544332211 =原创 2013-07-10 08:57:59 · 1678 阅读 · 0 评论 -
大白话解析模拟退火算法
优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入转载 2013-07-11 15:54:18 · 884 阅读 · 0 评论 -
遗传算法入门
转载自:http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法 遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发转载 2013-07-11 16:11:27 · 2031 阅读 · 0 评论 -
BST树
#include #include #define N 10 using namespace std;typedef struct node *link;struct node { int item; link l,r; };link NODE(int item,link l,link r){ link t = (li原创 2013-07-13 13:52:31 · 1415 阅读 · 0 评论 -
堆排序
1、堆定义:堆就是左右孩子小于或者大于父节点 2、排序思想:堆排序使用一种称为“筛”的运算进行节点数据的调整,直到使节点最后满足堆的条件。已调整A[i]1) q通常堆是通过一维数组来实现的。在起始数组为 0 的情形中:父节点i的左子节点在位置 (2*i+1); 父节点i的右子节点在位置 (2*i+2); 子节点i的父节点在位置 floor((i-1)/2); #原创 2013-07-14 10:52:07 · 1222 阅读 · 0 评论 -
Trie树|字典树(字符串排序)
Trie树 字典树的Java实现原创 2013-07-02 11:18:05 · 3945 阅读 · 3 评论 -
斐波那契数列 Php练手
数列从第三项开始,每一项都等于前两项之和。F0=0,F1=1,Fn=F(n-1)+F(n-2) 递归版和非递归版。<?phpfunction fib($n){ $array = array(); $array[0] = 1; $array[1] = 1; for($i=2;$i<$n;$i++){ $array[$i] = $array[$i-1]+$原创 2013-07-03 10:58:09 · 4614 阅读 · 0 评论 -
朴素贝叶斯分类
转载地址:http://www.raychase.net/1269英国数学家贝叶斯(Thomas Bayes)曾经给出如下定理:P(A)表示A事件发生的概率,P(B)表示B事件发生的概率;P(A|B)表示在B事件已经确定发生的情况下,发生A事件的概率;P(B|A)表示在A事件已经确定发生的情况下,发生B事件的概率;P(AB)表示AB事件同时发生的概率。所以:P(A)P(B|A)转载 2014-01-28 17:25:23 · 984 阅读 · 0 评论 -
任意进制转换
作者:silence、2012年5月15日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。一 简介 进行任意进制的转换二 重点 通过对输入的数进行分解,然后根据相应的数进行转码三 代码#include #include using namespace std;//n为进制,w为待转换的值 void conver(原创 2012-05-17 23:07:07 · 864 阅读 · 0 评论 -
二分查找
作者:silence、2012年5月17日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。#include #include /*Author : silenceTime : 2012/5/18Description : 二分查找 */ using namespace std;//循环方式 int Bsearch(in原创 2012-05-19 08:22:14 · 781 阅读 · 0 评论 -
选择排序
#include "stdafx.h"#include "stdio.h"void select(int a[],int n){for(int i =0;i<n;i++) for(int j =0 ;j<n;j++) { if(a[i]>a[j]) { int temp; temp=a[i]; a[i]=a[j];原创 2011-11-27 00:09:31 · 699 阅读 · 0 评论 -
.把二元查找树转变成排序的双向链表
参考地址为//* Copyright(C) 2011 //*//* FUNCTION : TreeToLink//* DESCRIPTION : Tree to link//* PARAMETERS : Type Name Description//* RETURN : Type Values Description//* CREATED DATE/BY : 2011/原创 2011-11-30 14:05:40 · 1321 阅读 · 0 评论 -
设计包含min函数的栈
2.设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。思路:利用辅助栈存储当前栈输入顺序的递减序列看下图:using System;using System.Collections.Generic;using System.Linq;using System.原创 2011-12-04 22:28:49 · 718 阅读 · 0 评论 -
算法大纲
//* Copyright(C) 2011 //* //* FUNCTION : TreeToLink //* DESCRIPTION : Tree to link //* PARAMETERS : Type Name Description //* RETURN : Type Values Description //* CREATED DATE/BY :原创 2011-12-04 21:15:05 · 750 阅读 · 0 评论 -
求素数
最先想到的就是让从2→N逐一检查。如果是就显示出来,如果不是,就继续检查下一个直到超出范围 N。这是正确的做法,但效率却不高。当然,2 是质数,那么 2 的倍数就不是质数,如果令 i 从 2→N,就很冤枉地测试了 4、6、8……这些数?所以第一点改建就是只测试 2 与所有的奇数就足够了。同理,3 是质数,但6、9、12……这些 3 的倍数却不是,因此,如果能够把 2 与 3 的倍数跳过去而不测试,转载 2011-12-05 09:49:46 · 755 阅读 · 0 评论 -
数组中子数组和的最大值
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,原创 2011-12-06 23:54:02 · 1225 阅读 · 0 评论 -
动态规划
我的理解 for(循环状态变量) { for(循环决策遍量) { 状态转移方程取局部最优解 } }循环取出最优解的所有决策以下为转载 http://www.cnblogs.com/steven_原创 2011-12-07 19:18:51 · 705 阅读 · 0 评论 -
回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的转载 2011-12-07 19:20:23 · 693 阅读 · 0 评论 -
贪心算法
一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。转载 2011-12-07 19:19:26 · 769 阅读 · 0 评论 -
分治算法
分治算法http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧转载 2011-12-07 19:17:37 · 728 阅读 · 0 评论 -
KMP算法的next数组
作者:silence、2012年5月19日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处#include #include /*Author : silenceTime : 2012/5/19Description : KMP算法的next[] */ using namespace std;void next(char T[原创 2012-05-19 14:07:21 · 948 阅读 · 0 评论 -
Floyd算法
Floyd算法作者:silence、2012年5月15日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。本文链接:http://blog.csdn.net/perfect2011/article/details/7568375一 简介Floyd算法是一种用于寻找图中每一对定点之间最短路径的算法。二 重点1,从任意原创 2012-05-15 13:35:52 · 1786 阅读 · 0 评论 -
Prim算法求最小生成树
作者:silence、2012年5月17日本文参考:Google,数据结构(C语言)本人声明:个人原创,转载请注明出处。 prim算法,求最小生成树#include #include /*最小生成树prim */#define Max 65535using namespace std;struct Graph{ int arrArc[200]原创 2012-05-17 23:09:29 · 1367 阅读 · 0 评论