五個基本的排序法

http://mis.im.tku.edu.tw/~tweety15c/sort.htm

◎選擇排序法(SELECTION SORT)
給予N個數,將這N個樹做比較,把最小的數排在第一個位
子,再將這N-1個數做比較,從這N-1個數中再次找出最小
的數放在第二個位子,再從這N-2個數中做比較,將最小的
數放在第三個位子,依此類推,直到N個數都比較完為止。
 
◎泡沫排序法(BOBBLE SORT)
給予N個數,將相鄰的兩個數做比較,若前面的數大於後面
的數,則將兩個數做調換;若前面的數不大於後面的數,
再繼續往下比,直到全部的數比較完為止 。
 
◎快速排序法(QUICK SORT)
快速排序又稱為劃分交換排序(partition exchange
sorting),就平均時間而言,快速排序是所以排序法中最好
的。假如有n個R1,R2,R3…Rk,鍵值為k1,k2….kn其步驟
如下:
1.以第一個紀錄的鍵值k1作為基準K
2.由左至右i=2,3,…,n一直找到
ki>=K
3.由右至左j=n,n-1,….,2一直找
到kj<=K 4.當i

顯示0,1,1,2,3,5,8,13…..

這是我去面試時的考題,

當時笨笨的,一直想不出來

(在此感謝建安,崇德及86的幫忙)

VB語法:

Dim x, y, z, n As Integer
x = 0
y = 0
z = 0

For n = 10 To 0 Step -1
Console.WriteLine(y)
z = x + y
If z = 0 Then z += 1
x = y
y = z
Next

——————————————————————————–

Java:

int x = 0,y = 0,z = 0;
int size = 10;
while((size–)>= 0){
System.out.println ;
z = x+y;
if(z == 0)++z;
x = y;
y = z;
}

新增回應
上午 11:32 | 永久連結 | 引用通告 (0) | 發佈至您的部落格 | CODING

永久連結 關閉

http://spaces.msn.com/jason695/blog/cns!1BF4A629EA6C6E8E!1196.entry

從 i=i++; 談程式師容易犯的錯!

轉貼自﹝工程師的家﹞

code:——————————————————————————–
i=0;
i=i++;
——————————————————————————–
這樣的程式,最後 i 的值會是多少?0 還是 1 或其它值?
我在網路上看過幾個類似的問題,回覆的答案也是莫衷一是。
對大部份的 C/C++ Compiler測試的結果是 1,
有人把它拿到 java 上測試,發現結果是 0 。
但 C/C++ 和 java 對這樣表示式的計算規則是一樣的啊!
是java不好?還是 C/C++ 錯了?事實上,都不是,
是程式寫得有問題!

ANSI C/C++ 運算式(expression)有一個但書:
如果一個左值(l-value)在運算式中被改變了兩次以上,除非運算子
能保證其計算次序,否則運算式的結果是未定義的

很明顯的 i 在運算式中被改變了兩次,所以:
運算後 i 的結果在ANSI C/C++的規格是未定義的,它依compiler 所用的運
算式演算法不同而有不同的結果,用你手上的C++ Compiler,i的結果可能
是0或是1甚至是其它的值,但不表示其它家的C++compiler 會有一樣的結
果; 甚至你手上C++的下一個版本都不保證會和現在一樣。因為它們都未違
反ANSI 的法律!

很多程式員並不熟讀程式語言的細節而容易犯下這樣的錯,原來跑得好好的
程式在compiler換上新版本後出現了問題。通常直覺的會去怪”新版本”的
compiler有bug!但十有八九問題是出在自己的程式。

”一個左值(l-value)在運算式中被改變了兩次以上,除非運算子 能保證
其計算次序,否則運算式的結果是未定義的”
這在C/C++原始的定義是這樣的:
一個運算式中若含有子運算式,子運算式的計值次序是未定義。
(未定義的意思是ANSI 未規範,編譯器可自行依演算法之差異而便宜行事)
對 i=i++; 這個運算式來說它分成
i=i;//<---主運算式 i=i+1;//<---子運算式 兩個運算式 因為子運算式(i=i+1)計值次序未定義,所以主運算式的右值 i 到底是新值或 舊值便無法確定,所以最後指派到i的值便未定義。 那麼什麼運算子可以保證子運算式的計值次序?就是”循序”運算子:逗號 (,) 像這樣的式子是正確的運算式: j=i++, i=j+2; 循序運算子保證其左邊會先於右邊計值。 注意到在C/C++裡只有運算式中的逗號是循序運算子,不是所有的逗號都 是循序運算子。 例如呼叫函式: FuncCall(i, j*i++); 這程的函式的呼叫是錯的,兩個引數中間的逗號是”分隔符號”不是”循序 運算子”。C/C++也不保證引數的計值次序,結果是第一個引數值是不確定的。

花了一個晚上除錯

不知有沒有電腦高手上來看到我這麼蠢的除錯方式,
真是獻醜啦!!
******************************************
以下我先說明一下我所遇到的情況,
我有寫一套「借還系統」(ASP.NET),
它是在win2000的環境下開發的,
而我架站的主機是win2003,
可是程式放上去之後,卻遇到問題了,
在本機執行程式,做新增,修改,刪除等動作都OK喔!!
但如果從其他台連到它,
按下某個BUTTON的功能(基本上都是要連上SQL SERVER資料庫),
一次OK,第二次就會掛點…(運氣不好的話,第一次就掛了)
而掛掉的情況就是”系統畫面直接黑掉,重新開機….”
******************************************
各位高手,你們認為要怎麼查呢?
以下,說明我花了一整個晚上的成果:
系統出現錯誤的話,一開始我是會查事件檢視器,沒有查到相關的錯誤訊息
接下來,我判斷是DNS出了問題,結果我使用區域內的IP連,依然掛點
程式應該是沒問題,所以我假設是和.NET程式和SQL SERVER的連接出了問題,所以,我把我測試環境的SQL SERVER連到主機上用,OK!!而主機上SQL SERVER連到測試環境上,結果,仍然OK!!有頭緒了…
我猜想,應該是那台win2003上SQL SERVER和ASP.NET的問題,於是,我把SQL SERVER和IIS都重灌,但….還是一樣沒有用(又陷入困境了)
我想到,我會自動重開機,是不是因為我開啟了錯誤重啟?沒想到,真的是這樣
很順利的,我終於看到了藍色的畫面,錯誤訊息出現了…..
teefer.sys!!這是什麼東東,上GOOGLE查,找不到,在我HD內查,檔案在SYGATE的資料夾下,這不是我防火牆的程式嗎?(現在時間是晚上2點了)
有點想睡了說,但我還是打起精神完成最後一步,我關掉防火牆再進行測試,賓果!!兇手就是它….
———————————————————————
後記:教導如何解teefer.sys的問題
http://www.file.net/process/teefer.sys.html
http://forums.sygate.com/vb/showthread.php?s=edb10aaa6e8c5fc90b420cf35878c222&threadid=7431

.NET的開發工具

開發工具
Microsoft Visual Studio.NET
以程式碼後置(CodeBehind)的概念將畫面與程式碼分離,以web form為例,aspx存放的是與畫面有關的html與server control,另外會產生一個同名的vb程式存放事件與邏輯

Form的配置:document的屬性pagelayout可有兩個值,flowlayout可以像寫asp一樣利用table繪製版面,gridlayout的話,有點像用layer

Microsoft ASP.NET Web Matrix
Web Matrix 是微軟完全以c#實作出來的Windows Form(Client-Side UI)的網頁程式IDE開發工具,雖然使用介面類似Visual Studio.NET但實際是以嵌入式(Embedded)的概念來表現,其程式碼與畫面放在同一個檔案內(CodeInline)。Web Matrix是一個”Community Project”,使用者可以透過線上社群的討論方式,針對感興趣的項目提出問題與回應。

Web Matrix與Visual Studio.NET尚有若干差異:
1. Web Matrix應用程式不是以專案型式開啟,檔案間各自獨立。
2. Web Matrix的程式撰寫區不提供Intellisense的屬性提示窗格。
3. Web Matrix檔案無法自動編譯成DLL,而須透過Command Line自行編譯。
4. Web Matrix IDE提供.NET Framework Class Library屬性查詢視窗與線上討論區連結。
5. Web Matrix程式免費下載與使用。

#develop
#develop (唸成「 Sharp Develop」) 是一套遵循GPL授權的自由軟體,可在微軟的.NET平台上編寫C#與VB.NET的程式

Borland C#Builder
Borland C#Builder

Mono
Mono 是一套.NET架構的開放原始碼發展平台,可讓軟體開發者以具生產力的方式輕易發展出跨平台的解決方案。
Mono’s .NET 實作了C#與CLR在 ECMA的標準(ECMA-334和ECMA-335)

在win2003上裝mysql

好不容易在2003上裝好了apache及php,

但在mysql的方面又出了問題,

mysql的版本為4.1版,不過,再怎麼裝都不能和phpmyadmin 2.6.3版

合起來用,真是奇怪了……..

————————–解決方法如下:—————————

(1) 在開始 → 執行輸入”CMD”進入命令列模式。
(2) 輸入 “MySQL 路徑\bin\mysql -h localhost -u root -p”。(假設要重設root密碼) (3) 接著會出現 Enter Password:輸入安裝MySQL打的密碼。
(4) mysql>提示符號鍵入:SET PASSWORD FOR
(5) 再輸入:’root’@’localhost’ = OLD_PASSWORD(‘新密碼’);
(6) 完成,現在就可以登入 phpMyAdmin 囉!

補充:只要是 MySQL 4.1.x 版無法連接都可照此方法試試。

————————–原因:—————————

因為新版的mysql編碼和php 4.3的編碼不相同

在win2003上裝apache

為了自己架個blog來玩玩,

詳細教學可參考:http://ying.homedns.org/wp/archives/2005/03/17/22/20/35/

因為我的iis有太多雜七雜八的東西,

所以我選擇使用apache做為我的web server,

但我在安裝時,只要把apache(版本為2.0.5.4)的port從預設值80改掉,

在service中的apache不只無法啟動,連找都找不到,

但設為80就ok了,

我iis的service都關掉了呀,

怎麼會這樣呢?

最後我是用default 的80port裝進去,

再去httpd.conf 改設定,

這是個bug嗎?