插入:
template
<
typename
datatype
>
void
insert
(datatype d,
int length)
d[i+1]
= key;
//插入剛剛的key值 注意是i+1}}
//們將d[0]作為哨兵元素,儲存待排序元素
#
include
#include
void
swap
(int
& a,
int& b)
void
bubble
(int a,
int n)
minindext = j;
//此時為交換之後更小的元素的索引
} i = minindext;}}
intmain()
;for
(int i =
0; i <
1000
; i++
)bubble
(a,1000);
for(
int i =
0; i <
1000
; i++
)printf
("time used = %.2f\n",(
double
)clock()
/ clocks_per_sec)
;}
注意:如果不寫swap函式,而是直接在bubble函式中交換兩個數字,發現它們最後並沒有發生交換。
快速排序:
template
<
class
t>
intpartition
(t data,
int p,
int r)
}swap
(data[i+1]
, data[r]);
return i +1;
}template
<
class
t>
void
quicksort
(t data,
int p,
int r)
}int
main()
;for
(int i =
0; i <
1000
; i++
)quicksort
(a,0
,999);
for(
int i =
0; i <
1000
; i++
)printf
("time used = %.2f\n",(
double
)clock()
/ clocks_per_sec)
;}
易錯點:swap(data[i+1], data[r]);
return i + 1;注意是i+1 ,如果寫成i無法排序
我們設定變數p 和r 表示陣列的首尾元素下標,選取陣列最右邊的元素為我們第一次排序的劃界元素,記為s[r]。那麼我們就需要將s[p],s[p+1],…,s[r–1]組成的序列進行子串行劃分
我們設定變數i=p–1,即最前面元素的前乙個,設定變數j = p。反覆執行如下步驟:
(1)執行j+1,如果s[j]≤s[r],交換s[i+1]與s[j]的值,i=i+1,j=j+1;如果s[j]≥s[r],i 不變,j=j+1;
(2)到j=r–1 時,停止步驟(1)。
重複執行上述步驟直至停止後,交換s[i+1]與s[r]的值,劃界元素放在了其最終位置上,其左邊的元素均小於等於它,右邊的元素均大於它。
歸併排序:
void
merge
(int aa,
int b ,
int c,
int lena,
int lenb)
else
if(i == lena)
}else
if(j == lenb)}}
}void
mergesort
(int a,
int n)
int k = n /2;
for(
int j =
0; j < n - n /
2; j++
)mergesort
(b, n /2)
;mergesort
(c, n - n /2)
;merge
(b, c, a, n /
2, n - n /2)
;}}int
main()
;for
(int i =
0; i <
1000
; i++
)mergesort
(a,1000);
for(
int i =
0; i <
1000
; i++
)printf
("time used = %.2f\n",(
double
)clock()
/ clocks_per_sec)
;}
歸併排序是排序兩個已經排序好了的陣列,原陣列要先拆成兩個子陣列,
注意:一定不能遺漏對於i和j達到a或者b末尾的判斷,否則會出現亂碼。當i到達a的末尾,則遍歷b剩下的陣列直接賦給c
跟之前的對比歸併排序時間是最長的。
幾種排序演算法執行時間比較
最近無聊,把各種排序演算法在linux下用c實現了,並記錄其執行時間如下 對10m個無符號隨機整數進行排序,各種演算法的時間如下 qsort c標準庫自帶函式 real 0m5.901s user 0m5.548s sys 0m0.300s merge sort real 0m5.757s user...
一億以上資料幾種排序演算法執行時間比較
執行結果如下圖 單位ms insert 只排了8萬及以下資料 heap 參考演算法導論,maxheapify採用迭代取代遞迴 shell 增量遞減序列採用1 2 3k 1 1 2 3 k 1 1 2 3k 1 形式 shell is incerpi sedgewick提出的增量遞減序列 139137...
flask和django的執行時間比較
flask和django的執行時間比較 flask介面 from flask import flask,request import json defadd args a,b return a b get tasks methods post defget tasks if request.meth...