當前位置:首頁 » 操作系統 » 一天編寫演算法

一天編寫演算法

發布時間: 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語言程序也是演算法的一種形式,以後老師讓你寫演算法的時候你就寫程序吧,他會給你滿分的。

演算法是一種簡化的、抽象的程序,是通俗語言加上一些邏輯格式對程序過程的描述,它不是程序,但是所有的程序員都能把它翻譯為自己會的那種程序。

熱點內容
android音源 發布:2024-10-09 14:55:19 瀏覽:118
預編譯sql怎麼模糊查詢 發布:2024-10-09 14:31:24 瀏覽:217
我的世界伺服器被占違法嗎 發布:2024-10-09 14:27:50 瀏覽:390
資源配置如何發生作用 發布:2024-10-09 14:27:48 瀏覽:685
next數組演算法 發布:2024-10-09 14:25:38 瀏覽:138
存儲錄制視頻失敗 發布:2024-10-09 14:24:12 瀏覽:87
演算法結合硬體 發布:2024-10-09 14:11:37 瀏覽:997
安卓驅動編譯進內核 發布:2024-10-09 13:59:30 瀏覽:604
ubuntunginx編譯 發布:2024-10-09 13:27:36 瀏覽:725
怎麼查伺服器ip段 發布:2024-10-09 13:08:04 瀏覽:152