演算法是如何影響程式編碼方式的 基本排序演算法

2022-02-08 04:28:13 字數 2067 閱讀 2056

我們的目標是從乙個int的array中,找出最小值。

作為demo程式,我們先增加乙個類,用來模擬array,如下定義:

class

carray

public carray(int

capacity)

public

void insert(int

value)

public

void

clear()

public

void

display()

, ", this

.array[i]));

}#region 統計函式

public

intmax()

public

intmin()

#endregion

再加入乙個計算所用時間的類,用來計算min/max函式所執行的時間

class

timing

public

void

stop()

public

void display(string

msg)

}

我們先來寫個最簡單的,沒有排序功能的demo程式,來看看當沒有排序時的效能:

int count = 19999

;carray aryobj = new

carray(count);

random rnd = new

random(datetime.now.second);

for (var i = 0; i < count; i++)

aryobj.insert((

int)(rnd.nextdouble() * 100000) + 1

);timing t = new

timing();

t.start();

aryobj.min();

t.stop();

t.display(

"排序前min值

");

執行結果:

然後,我們再為這個carray編寫乙個排序功能,如下:

public

void

bubblesort()}}

sorted = true

;//新增加的乙個私有成員

}public

int min()//修改

然後修改主程式如下

int count = 19999

; carray aryobj = new

carray(count);

random rnd = new

random(datetime.now.second);

for (var i = 0; i < count; i++)

aryobj.insert((

int)(rnd.nextdouble() * 100000) + 1

); timing t = new

timing();

t.start();

aryobj.min();

t.stop();

t.display(

"排序前min值");

t.start();

aryobj.bubblesort();

t.stop();

t.display(

"氣泡排序");

t.start();

aryobj.min();

t.stop();

t.display(

"排序後min值

");

執行結果圖:

min函式的執行效率在排序前後相差了379倍。

有人肯定會說,這些排序演算法在c#中都已經被ms實現了,所以沒用!

C程式的編碼方式

編碼是用預先規定的方法將文字 數字或其它物件編成數碼。為保證編碼的正確性,編碼要規範化 標準化,即需有標準的編碼格式。可以肯定的說,在現代計算機中,窄字串已經不再使用 ascii 編碼了,因為 ascii 編碼只能顯示字母 數字等英文本元,對漢語 日語 韓語等其它地區的字元無能為力。對於窄字串,c語...

字元編碼對程式的影響及分析

今天在呼叫乙個動態庫的時候,使用到下面的語句 hmodule hdll loadlibrary filedir dlltest.dll 因為編譯環境選擇的是unicode字符集,所以當我上面的語句從乙個多位元組字符集的編譯環境複製過來後,出現了語法錯誤。語法錯誤的提示為 error c2664 lo...

如何判斷檔案的編碼方式

最近做東西需要知道檔案 txt,html.究竟是什麼編碼方式,不然讀取檔案內容可能出現亂碼 經過網上查詢發現兩種總結一下,方便自己也方便別人 通過判斷檔案頭,不過檔案頭不是必須的,所以有些檔案是沒有檔案頭的 ef bb bf utf 8 fe ff utf 16 ucs 2,little endia...