当前位置:首页 » 操作系统 » 一天编写算法

一天编写算法

发布时间: 2022-05-12 00:38:15

Ⅰ 一天弄懂一个算法很慢吗

慢。一个算法也就三四个小时吧,学习算法不仅只是学习,还要查阅资料,所以我想至少需要3个小时。学习算法需要多长时间?不得不说,为了高考取得好成绩,在中学时代,学校的老师大都灌输了高考这条狭路的思想。其实除了高考我们还有很多选择,一次失利不代表人生就没戏了。

Ⅱ 程序员 一天平均能写多少行 有效代码

很多程序的编写并不是逐句创作的,大部分情况是由相近的程序修改一下得到,甚至是原封不动将已有的算法、函数抄录过来。这样可以写很多行有效代码,复制粘贴不好统计的。

Ⅲ 如何编写一个算法

实现逆转的函数为void ReverseQueue(),其他的都是辅助测试所用。

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"

#define MAX 10

struct Queue
{
int front;
int rear;
int a[MAX];
}Que;

void Initial();
int InsertQueue(int n);
int DeleQueue();
void ReverseQueue();
void PrintQ();
//该函数是为了测试逆转函数的正确性
void TestFun();

int main()
{

Initial();
TestFun();
return 0;
}

void Initial()
{
Que.front=0;
Que.rear=0;
for (int i=0; i<MAX; i++)
{
Que.a[i] = 0;
}
}
int InsertQueue(int n)
{
if ( (Que.rear+1)%MAX == Que.front )
{
return 0;
}
Que.a[Que.rear] = n;
Que.rear = (Que.rear+1)%MAX;
return 1;
}

int DeleQueue()
{
if (Que.rear == Que.front)
{
return 0;
}
int temp;
temp = Que.a[Que.front];
Que.front++;
return temp;
}

void ReverseQueue()
{
int len;
len = (Que.rear-Que.front+MAX)%MAX;//total number in the queue
int start,end;
start = Que.front;
end = (Que.front+(len-1))%MAX;//the last number's index
int temp=0;
for (int i=0; i<len/2; i++)
{
temp = Que.a[end];
Que.a[end] = Que.a[start];
Que.a[start] = temp;
start = (start+1)%MAX;
end = (end-1+MAX)%MAX;
}
}

void PrintQ()
{
printf("\n");
int len = (Que.rear-Que.front+MAX)%MAX;
int k=Que.front;
for (int i=Que.front; i<Que.front+len; i++)
{
printf("%d ",Que.a[k]);
k = (k+1)%MAX;
}
}
//该函数是为了测试逆转函数的正确性
void TestFun()
{
int i=0;
for (i=0; i<MAX; i++)
{
if (InsertQueue(i) == 0)
{
printf("\nQueue is full!");
break;
}
}
PrintQ();
for (i=0; i<MAX/2; i++)
{
DeleQueue();
}
printf("\nAfeter delete %d number in the queue",MAX/2);
PrintQ();
ReverseQueue();
printf("\nReverse ==>");
PrintQ();
for (i=0; i<MAX/2; i++)
{
InsertQueue(i*8);
}
printf("\nAfter insert %d number in the queue",MAX/2);
PrintQ();
ReverseQueue();
printf("\nReverse ==>");
PrintQ();
printf("\n");
}

Ⅳ 一名优秀的java程序员平常一天至少写多少行代码

优秀的JAVA程序员平常一天至少写150行代码,普通的JAVA程序员,平均一天的有效代码量大概是50~70行, 注意是有效代码。

Ⅳ java写算法,多个时间段,去掉重复之后的时间差(小时)

用文字表达一下算法思路吧
考虑到时间可能不是整点,让算法更兼容,这里统一将时间转换成基于00:00的精度到分的时间戳;
即07:00 = 7 * 60 = 420,10:00 = 10 * 60 = 600;

导入第一组工时数据
转换成时间戳,两个为一组
将连续的时间段存入数组
导入第N组工时数据并转换成时间戳
将第N组开工时间戳和收工时间戳和数组中的连续时间段进行比较
根据比较结果维护连续时间段的数组
根据数组计算出结果或者在循环处理数据时直接累加结果

Ⅵ 请教编程高手:如何培养编写算法的思路

选一本出色的教材.有条件就看英文的,然后给自己一个环境,例如LINUX+GCC+GDB,用纯粹的语言去在解决问题的过程中学习算法.
没有目的性去学习,往往效率不高,可以找一些ONLINE JUDGE的题目做做.例如Welcome To PKU JudgeOnline,对着里面的问题,先自己思考,尝试编程解决,如果不能解决,就翻翻算法书,想想为什么.

如果还是不行,那就上网看看别人有没有解决掉,怎么做,看看他们用到什么算法,比对着,然后进一步自己去实现.
有时候对于算法的问题的实现,你在实现之前也许会卡住,但是在编程过程中,随着你的锻炼和熟练度的提高.会有那么一天你觉得什么都通了,而且,你是在用的过程中学习.坚持走下去,一定事半功倍.

“cracking the coding interview”,题目是按照array, stack&queue, 链表,树图,递归这种章节安排的,每章节题目7-8个,不多,难度中等,找感觉很有帮助。第一遍自己写不出来的话(我就是,这么弱!),画图分析,抄背默。一遍做完再做一遍,第二遍就快很多,理解也深刻了,所谓读书百遍,其意自现,算法也一样。

不要一开始就看《算法导论》,这本书有太多关于算法的数学证明.
推荐你看看这本:算法(第4版) (豆瓣),作者是高德纳的学生:塞奇威克 (Robert Sedgewick)
书中算法代码主要是用Java编写,里面有大量的图来让你明白例如:排序,查找,树和图的算法运行过程。
这本书的目录编排也很清晰,他就告诉你算法主要就可以分为:排序,查找,图和字符串。从这4个方面可以演化出很多算法,最关键是:这本书的作者不但是在告诉你what,而且告诉你why(分析各种算法的优缺点)
这本书其他好的地方
比如讲到快速排序,很多书可能讲了快速排序的原理就完了。但这本书就直接讲了原始的快速排序可以改进的地方:1. 在小数组上,切换到插入排序;2. 三取样切分;3. 三向切分的快速排序。
优先队列怎么和排序算法扯上关系呢?其实优先队列就是可以用堆排序来实现,堆排序的时间复杂度和快速排序是一样的,但是实际中为什么堆排序的运行时间要比快速排序多呢?因为这和CPU的Cache命中率有关系,堆排序不符合算法运行的局部性原则
比如书中2.5节,讲了排序算法的实际用途,这本书不光告诉你算法的原理,还告诉你算法的用途。

Ⅶ 看看一个程序员平均一天写多少代码

这个也不一定,有时候写些前端UI的,好多就自动生成了,其他的大部分也是抄抄改改(不是说前段没有技术含量,我们的UI都定义好了所以用起来方便,写底层UI各种响应的还是很牛叉的),所以这样多的时候一天可以写四五千行。
有时候写些底层函数,特别是效率要求高,各种复杂算法的,一天能写上几百行就不错了,或许就这几百行后面还得慢慢改。

Ⅷ 用FREE PASCAL的数组冒泡排序编写一道题,不要太高级的算法,一天时间,速度!

var
n,x,y,z,i,j:longint;
a:array [1..1000] of longint;
b:array [1..1000] of integer;
begin
readln(n);
for i:=1 to n do begin
readln(x,y,z);
a[i]:=x+y+z;
b[i]:=i;
end;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then begin
x:=a[j];a[j]:=a[j+1];a[j+1]:=x;
x:=b[j];b[j]:=b[j+1];b[j+1]:=x;
end;
for i:=n downto 1 do
writeln(b[i],' ',a[i]);
end.

Ⅸ 如何写一个算法

算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。 一个算法应该具有以下五个重要的特征: 1、有穷性: 一个算法必须保证执行有限步之后结束; 2、确切性: 算法的每一步骤必须有确切的定义; 3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件; 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过,那么你一般会顺利地做出来;如果没见过,那么考虑以下问题: 当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过,那么你一般会顺利地做出来;如果没见过,那么考虑以下问题: 1. 问题是否是建立在某种已知的熟悉的数据结构(例如,二*树)上?如果不是,则要自己设计数据结构。 2. 问题所要求编写的算法属于以下哪种类型?(建立数据结构,修改数据结构,遍历,查找,排序...)3. 分析问题所要求编写的算法的数学性质.是否具备递归特征?(对于递归程序设计,只要设计出合理的参数表以及递归结束的条件,则基本上大功告成.)4. 继续分析问题的数学本质.根据你以前的编程经验,设想一种可能是可行的解决办法,并证明这种解决办法的正确性.如果题目对算法有时空方面的要求,证明你的设想满足其要求.一般的,时间效率和空间效率难以兼得.有时必须通过建立辅助存储的方法来节省时间.5. 通过一段时间的分析,你对解决这个问题已经有了自己的一些思路.或者说,你已经可以用自然语言把你的算法简单描述出来.继续验证其正确性,努力发现其中的错误并找出解决办法.在必要的时候(发现了无法解决的矛盾),推翻自己的思路,从头开始构思.6. 确认你的思路可行以后,开始编写程序.在编写代码的过程中,尽可能把各种问题考虑得详细,周密.程序应该具有良好的结构,并且在关键的地方配有注释.7. 举一个例子,然后在纸上用笔执行你的程序,进一步验证其正确性.当遇到与你的设想不符的情况时,分析问题产生的原因是编程方面的问题还是算法思想本身有问题. 8. 如果程序通过了上述正确性验证,那么在将其进一步优化或简化。 9. 撰写思路分析,注释. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------看不懂,还是不明白,有谁清楚告诉我啊,

Ⅹ 算法编写方法

C语言程序也是算法的一种形式,以后老师让你写算法的时候你就写程序吧,他会给你满分的。

算法是一种简化的、抽象的程序,是通俗语言加上一些逻辑格式对程序过程的描述,它不是程序,但是所有的程序员都能把它翻译为自己会的那种程序。

热点内容
用脚本砍价 发布:2025-01-16 11:04:36 浏览:680
公司密码包括什么 发布:2025-01-16 11:04:04 浏览:544
php批量查询 发布:2025-01-16 10:43:38 浏览:917
适合搭建代理服务器的云 发布:2025-01-16 10:42:49 浏览:428
我的世界手机版服务器怎么注册 发布:2025-01-16 10:41:30 浏览:614
小米云电视服务器 发布:2025-01-16 10:37:03 浏览:350
php开源wiki 发布:2025-01-16 10:27:19 浏览:189
sql加字段备注 发布:2025-01-16 10:21:49 浏览:565
线割编程教程 发布:2025-01-16 10:21:03 浏览:18
谷歌浏览器缓存删除 发布:2025-01-16 10:19:36 浏览:414