本文將以排序演算法中的插入排序為例,介紹優化演算法,編制高效程式的方法。
人們通常用於排序手中橋牌的方法是一次考慮一張牌,將它插入到已經排序過的牌的適當位置中(時刻讓它們保持有序)。在計算機實現中,我們需要將較大的元素移到右邊,為插入的元素準備空間,然後再在空位置上插入該元素。該演算法的通常的乙個實現如下。
#include
#include
typedef int item;
#define key(a) (a)
#define less(a,b) (key(a)l;j--)
compexch(a[j-1],a[j]);
}int main(int argc,char *argv)
a[j]=v;}}
在本文中,我們對雅緻,高效的演算法以及他們的雅緻,高效的實現感興趣。充分理解演算法的性質是編制可以在應用中高效運用的實現的最好嚮導。
為了測試兩個演算法的效果,我們使用如下**:
large_integer litemp;
longlong qpart1,qpart2;
double dfminus,dffreq,dftim;
::queryperformancefrequency(&litemp);
dffreq=(double)litemp.quadpart;
::queryperformancecounter(&litemp);
qpart1=(double)litemp.quadpart;
// do the task
sort(a,0,n-1);
// the task has end
::queryperformancecounter(&litemp);
qpart2=(double)litemp.quadpart;
dfminus=(double)qpart2-qpart1;
dftim=dfminus/dffreq;
在兩個注釋之間的是我們要測試的函式,當我們用兩個演算法實現對5000個隨機產生的int型數進行排序時,第乙個實現用時0.115930秒,第二個實現用時0.042093秒。測試平台為:賽揚2.66ghz,512mb記憶體,windows xp作業系統,vc++ 6.0開發環境。
sql優化一例
原sql,查詢總數300,每頁15資料也要8秒 select a from table where date format my time,y m d 2012 08 15 limit 0,15 優化後的sql,查詢總數18000,每頁15的資料只要1秒 select a from table wh...
PHP優化技巧一例
測試資料 有乙個陣列 一共3萬條資料,1mb大小,我分成2種方法放資料來測試 in 1.array.php 直接新建個空 url file php url 檔案,把陣列放進去 2.array.txt 把陣列serialize後儲存 測試程式 複製內容到剪貼簿 for i 0 i 100 i 結果 r...
SQL Server 查詢優化一例
前幾天去客戶那裡做效能檢查優化,發現有這樣一大段sql語句,每天會執行幾千次,一共36條相似語句,只是每條語句中的條件 病案大類 不同 select 一般醫療服務費 sum isnull 金額,0 from 流水帳 with nolock where 住院號 zyh and 專案 in select...