• Oct 07 Sun 2012 23:42

醒了。

醒過來的時候,我發現自己不記得做了什麼夢。

其實這很正常。

這世界上誰敢說能夠很清楚的記得自己的夢呢?

誰都沒有辦法。

archerdevil 發表在 痞客邦 留言(0) 人氣()

好吧!這一篇其實試看到某個孩子寫了白癡,不想吃昂貴的滷肉飯,就不要吃呀! 這篇文章所產生出來的。

我後來在後面留下了回應,大致內容如下:

 

認真點說...
企業目的才是賺錢,企業責任(Corporate Social Responsibility,簡稱CSR)泛指企業的營運方式達到或超越道德、法律及公眾要求的標準,進行商業活動時亦考慮到對各相關利益者造成的影響。其概念是基於商業運作必須符合可持續發展的想法,除了考慮自身的財政和經營狀況外,也要加入其對社會和自然環境所造成的影響的考量... 

archerdevil 發表在 痞客邦 留言(1) 人氣()

首先我一定要提醒大家一件事情:謝爾排序法最一開始是用來改良「插入排序法」的,所以裡面的觀念不是SWAP,而是「插入」。會這樣寫一個前提的原因,是因為我在上課的時候,某個老師將「插入」這個動作誤植為「交換」,所以讓很多人一頭霧水。說真的,不是我偏,但身為一個補習班老師,你就不能講得正確一點嗎!?Doth thou monther know you were such idot? (#註1)

謝爾貝殼排序法要先找到級距(gap),最簡單的級距就是把陣列大小/2。相同級距的值作為一個位元組進行插入排序,結束之後級距/2進入迴圈,直到級距等於1 為止。

 

#include <iostream>
#include <time.h>

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

簡單說就是第一次找到最小的放到第一個元素位置,第二次找到第二小的放到第二個元素位置......

BIG OH大約是.... n+n-1+n-2+...+2 = ((n-2+1)n)/2 = ((n-1)n)/2
因此約等於O(n2

為什麼不做到最後一個?當然是因為沒有必要。

這樣解釋吧...,當我們使用兩個迴圈結構進行排除與搜尋的時候,開始當然都是從0開始,第二層的結束邊界也沒有問題,一定是做到完才有辦法每個元素都抓到;可是第一個迴圈呢?第一個迴圈當然跑到邊界極限的「前一個」就好。

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

好,細部分解完快速排序之後,讓我們依照由左到右、由小到大的順序,再玩一次快速排序。

這一次,我們要用最簡短的方式試看看

 

 

#include <iostream>

文章標籤

archerdevil 發表在 痞客邦 留言(1) 人氣()

進入快序排序法之後,其實就很考驗邏輯思考,所以其實我很少用快速排序或者是合併排序法。理由很簡單,寫起來很麻煩很囉唆,一不小心就會錯很大。

不過該寫還是要寫,該複習還是要複習,所以今天來玩所謂的不穩定排序法:快速排序。

快速排序的動作如下

1. 決定一個基準點(中間、左邊、或者右邊)

2.假設你決定基準點在左邊的話,那用 i 指標從基準點後一位開始找,找到比基準值大的數值停下

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

總覺得今天狀況不是很好,腦子不是很清楚,一個選擇排序寫好久,自以為邏輯對,結果把自己繞到迷宮理去了XDD

所謂的選擇排序,就是當你要由小到大排序的時候,先找到最小的紀錄起來,然後與第一個位置交換。

比如說當你今天有意個array{5,4,3,2,1},你打算由小到大重新排列

那第一輪過後一定是{1,4,3,2,5}

接下來{1,2,3,4,5}

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

泡泡排序玩過之後,為什麼會有本篇「之二」誕生?

很簡單,因為這一次要玩的,是降低運算次數。為什麼要降低運算次數?

很簡單,假設我們有一個陣列大小為三的陣列arr[3]={A, B, C}

如果不降低次數的話,使用兩個迴圈,總次數為:(n-1)(n-1) = 2*2 = 4次 //不要忘記統統從零開始

for(int i= 0; i<n-1; i++ )

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

雖然很簡單但還是要複習一下的基礎排序法之一:泡泡排序法

這大概是所有學寫程式的人一定會遇到的問題。這個問題練習了兩個主題,一個是基礎排序,另外一個是兩值交換。兩值交換有好幾種方法,一種是多增加一個變數,用三個空間做兩個值的互換,另外一種是只能用在數字上:B=A+B, A=B-A, B=B-A。這種方法可以在不增加變數空間佔用的狀況下實現兩個數值的交換>

範例:
int A = 9;

文章標籤

archerdevil 發表在 痞客邦 留言(0) 人氣()

昨天寫了陣列與一般堆疊,講到堆疊當然會想到佇列,所以今天來玩一般佇列。

一般佇列當然是先進先出,也就是說從嘴巴吃進去從屁股拉出來,所以會有top當作屁股、rear當作嘴巴,放置item一定都從嘴巴,刪除一定都從屁股。

需要寫到的當然會有create功能(用來初始化佇列),isempty、isfull(用來判斷是否空佇列、是否有空間可以放入),add功能(放入)、以及del(刪除)功能。其實一般佇列應該還要寫一個釋放空間功能,因為佇列的存入一定是從rear,一般佇列並不像是環狀佇列一樣頭尾銜接,所以如果沒有釋放空間功能的話,當rear的位置在陣列的最尾端時,不管陣列中有沒有空間都是無法繼續放入元素的。

 

#include <iostream>

文章標籤

archerdevil 發表在 痞客邦 留言(1) 人氣()