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 大部分已排序時較好 基數 ...