幾種排序演算法及其效率對比

2021-10-09 08:33:08 字數 3906 閱讀 5318

public

class

bubblesort

// sort(arr);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

public

static

void

sort

(int

arr)}}

}}

測試結果

排序10000個資料:155ms

public

class

quicksort

// sort(arr, 0, arr.length - 1);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr,

0, arr.length -1)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

/** * 遞迴實現快速排序

* @param arr

* @param left

* @param right

*/public

static

void

sort

(int

arr,

int left,

int right)

//尋找右邊的小於中間的值

while

(arr[r]

> center)

//如果l大於等於r則不要進行交換,直接退出

if(l >= r)

//交換

temp = arr[l]

; arr[l]

= arr[r]

; arr[r]

= temp;

//如果l或者r等於center則做一定的處理

if(arr[l]

== center)

if(arr[r]

== center)

}//防止棧溢位

if(l == r)

//往左邊遞迴

if(left < r)

if(right > l)

}}

結果

排序100000個資料:11ms

public

class

selectsort

// sort(arr);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

public

static

void

sort

(int

arr)}if

(minindex != i)}}

}

結果

排序10000個資料:60ms

public

class

insertsort

// sort(arr);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

public

static

void

sort

(int

arr)

if(insertindex +

1!= i)}}

}

結果

排序10000個資料:26ms

public

class

shellsort

// sort(arr);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

public

static

void

sort

(int

arr)

arr[j]

= temp;}}

}}}

排序100000個資料:26ms

/**

* 堆排序

*/public

class

heapsort

// sort(arr);

// system.out.println(arrays.tostring(arr));

long start = system.

currenttimemillis()

;sort

(arr)

;long end = system.

currenttimemillis()

; system.out.

println

(end - start);}

public

static

void

sort

(int

arr)

for(

int j = arr.length -

1;j >

0;j--)}

public

static

void

heapsort

(int

arr,

int i,

int length)

if(arr[k]

> temp)

else

} arr[i]

= temp;

}}

結果

排序100000個資料:15ms

Java 幾種排序演算法對比

直接插入排序 插入排序就是 取出乙個數,插入到有序陣列中,首先,取出第乙個元素放入有序陣列中,然後取出第二個,兩個數進行比較,如果它小,則有序數的最後乙個向後移動一格,然後與有序陣列倒數第二個比較,如果小,則繼續向後移動。如果碰到比它小的,則插入在其後面。演算法思想為 外層迴圈是遍歷陣列的所有值 內...

幾種常見的排序演算法對比

幾種常見的排序演算法對比 排序法 平均時間 最差情形 穩定度額外空間 備註 冒泡o n2 o n2 穩定o 1 n 小時較好 交換 o n2 o n2 不穩定o 1 n 小時較好 選擇 o n2 o n2 不穩定o 1 n 小時較好 插入 o n2 o n2 穩定o 1 大部分已排序時較好 基數 o...

幾種常見的排序演算法對比

排序法 平均時間 最差 情形 穩 定度 額外 空間 備註 冒泡o n 2 o n 2 穩定 o 1 n 小時較好 交換 o n 2 o n 2 不穩定o 1 n 小時較好 選擇 o n 2 o n 2 不穩定o 1 n 小時較好 插入 o n 2 o n 2 穩定 o 1 大部分已排序時較好 基數 ...