Linq排序效率 Vs 快速排序效率

2021-09-05 21:06:25 字數 1712 閱讀 8398

1

using

system;

2using

system.collections;

3using

system.collections.generic;

4using

system.diagnostics;

5using

system.linq;67

namespace

consoletest820

21stopwatch stopmatch 

=new

stopwatch();

22stopmatch.start();

23list

<

string

>

listorder 

=listtest.orderbydescending(c 

=>

c).tolist

<

string

>

();24

stopmatch.stop();

2526

console.writeline(

"linq排序耗時:\t毫秒

", stopmatch.elapsedmilliseconds.tostring());

2728

string

arrtest 

=listorder.toarray();

2930

stopmatch.reset();

31stopmatch.start();           

32quicksort(arrtest, 

0, arrtest.length -1

);33

34stopmatch.stop();

3536

console.writeline(

"二分法排序耗時:\t毫秒

", stopmatch.elapsedmilliseconds.tostring());

37console.read();

383940}

4142

///43

///二分法從小到大排序

44///

45///需要排序的字串陣列

46///排序元素的起始下標

47///排序元素的結止下標

48public

static

void

quicksort(

string

array, 

intstart, 

intend)

4956

else

577980}

8182

//把標記元素和第乙個》=它的元素位置互換,這樣陣列就分成2個部分,乙個部分比中心值小,乙個部分比中心值大。

83tmp 

=array[j];

84array[j] 

=array[end];

85array[end] 

=tmp;

86quicksort(array, start, j);

87quicksort(array, j +1

, end);88}

8990}91

9293}94

}95

測試結果:

linq排序耗時:   2131毫秒

二分法排序耗時: 2083毫秒

二者幾乎差不多

排序 快速排序

快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...

排序 快速排序

定義 在快速排序演算法中,使用了分治策略,將要排序的序列分成兩個子串行,然後遞迴地對子序列進行排序,直到整個序列排序完畢。步驟 1.在序列中選擇乙個關鍵元素作為軸 2.對序列進行重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上 3.遞迴地對兩個子...

排序 快速排序

時間複雜度 快速排序每次將待排序陣列分為兩個部分 1 在理想狀況下,每一次都將待排序陣列劃分成等長兩個部分,則需要logn次劃分。2 在最壞情況下,即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,最壞情況為o n 2 快速排序的平均時間複雜度為o nlogn...