算法研究方向需要什么基础???,前景如何???

问题描述

算法研究方向需要什么基础???,前景如何???

我是个自学计算机的大学生,因为不是计算机专业,所以有些方面对我来说是个问题!而且也只是从去年才真正接触计算机,主要是编程方面的知识!后来便慢慢喜欢上计算机这个科学!但是对于一个初学者和自学者一切显得茫然不知,后来自己慢慢自学了c语言,感觉确实有意思!也尝试写些有一定意义的程序!但总感觉这些程序没有实际意义,或许只能作为一个训练作用吧?在自学算法与数据结构时对算法有很大兴趣!总感觉这是一个很有潜力的方向!但又说不清道不明!我也不知道自己在基础方面缺少什么!由于没有系统的计算机方面的知识,一切都显得乏力茫然!我设想自己是否可以在算法方面入手,深入其中,希望能有所进步有所得!但不知道怎么入手!所以希望大家鼎力相助!感恩不尽!

解决方案

首先你的数学功底一定要硬,然后学习数据结构,再然后数值分析,再然后看智能算法

时间: 2024-11-01 08:14:54

算法研究方向需要什么基础???,前景如何???的相关文章

概率-算法设计与分析基础》书上看到的一道练习题

问题描述 算法设计与分析基础>书上看到的一道练习题 2C 丢失的袜子:假设在洗了5双各不相同的袜子以后,你发现有两只袜子不见了且每只袜子丢失的概率都相同,请找出最佳情况(留下四双完整袜子)的发生概率和最差情况(留下三双完整袜子)的发生概率以及平均情况下的概率. 解决方案 最佳情况发生的概率: C(51)/C(210) = 1/9最差情况发生的概率: 1 - 1/9 = 8/9 (因为非4即3),即:1-C(51)/C(102).顶多丢2双.期望: 4×(1/9)+ 3×(8/9) = 28/9

投票算法是进行网站基础优化的关键

摘要: 搜索引擎算法 我们之前了解过很多,尤其是针对网站排名优化的算法在笔者这里更是曝光率极高的分析源.在众多的搜索引擎算法中,直接影响网站排名算法的当属投票算法. 投票算 搜索引擎算法我们之前了解过很多,尤其是针对网站排名优化的算法在笔者这里更是曝光率极高的分析源.在众多的搜索引擎算法中,直接影响网站排名算法的当属投票算法. 投票算法是我们进行网站基础优化的关键,同时也是提升排名的后期优化的主要针对面.提到投票算法,我们首先想到的就是站内链接的布局投票以及站外链接的推荐投票,但是投票算法仅仅是

Javascript快速排序算法详解_基础知识

快速排序是对冒泡排序的一种改进.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列. 假设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为基准数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对

javascript中实现兼容JAVA的hashCode算法代码分享_基础知识

在java中一个hashCode算法,可以用来计算一个字符串的hash值,今天一个朋友突然问俺能不能在js中计算hashCode,要求和java的hashCode计算结果一样. 对于java的hashCode,以前到现在也一直没有了解过其算法,不过猜想应该也不会太难,于是现在java中写了这段代码进行测试: 运行结果:899755 按下Ctrl键点击hashCode方法名跟进去看了下其算法,发现是很简单的几句代码,如下所示: 复制代码 代码如下: public int hashCode() {

Javascript堆排序算法详解_基础知识

堆排序分为两个过程: 1.建堆. 堆实质上是完全二叉树,必须满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字. 堆分为:大根堆和小根堆,升序排序采用大根堆,降序排序采用小根堆. 如果是大根堆,则通过调整函数将值最大的节点调整至堆根. 2.将堆根保存于尾部,并对剩余序列调用调整函数,调整完成后,再将最大跟保存于尾部-1(-1,-2,...,-i),再对剩余序列进行调整,反复进行该过程,直至排序完成. 复制代码 代码如下: //调整函数 function head

Javascript冒泡排序算法详解_基础知识

比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 复制代码 代码如下: function sort(elements){   for(var i=0;i<elements.length-1;i++){     for(var j=0;j<elements.length-i-

程序员必须知道的10大基础实用算法及其讲解

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "

程序员必须知道的10大基础实用算法及其讲解(转)

  算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1从数列中挑出一个元素,称为"基准"(p

10大开发者必知的基础实用算法及其讲解

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "