Java排序演算法速度比較(轉載)
public class Sort {
public void swap(int a[], int i, int j) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public int partition(int a[], int low, int high) {
int pivot, p_pos, i;
p_pos = low;
pivot = a[p_pos];
for (i = low + 1; i <= high; i++) {
if (a[i] > pivot) {
p_pos++;
swap(a, p_pos, i);
}
}
swap(a, low, p_pos);
return p_pos;
}
public void quicksort(int a[], int low, int high) {
int pivot;
if (low < high) {
pivot = partition(a, low, high);
quicksort(a, low, pivot - 1);
quicksort(a, pivot + 1, high);
}
}
public static void main(String args[]) {
int vec[] = new int[] { 37, 47, 23, -5, 19, 56 };
int temp;
//選擇排序法(Selection Sort)
long begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 0; i < vec.length; i++) {
for (int j = i; j < vec.length; j++) {
if (vec[j] > vec[i]) {
temp = vec[i];
vec[i] = vec[j];
vec[j] = temp;
}
}
}
}
long end = System.currentTimeMillis();
System.out.println("選擇法用時為:" + (end - begin));
//列印排序好的結果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
// 氣泡排序法(Bubble Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 0; i < vec.length; i++) {
for (int j = i; j < vec.length - 1; j++) {
if (vec[j + 1] > vec[j]) {
temp = vec[j + 1];
vec[j + 1] = vec[j];
vec[j] = temp;
}
}
}
}
end = System.currentTimeMillis();
System.out.println("冒泡法用時為:" + (end - begin));
//列印排序好的結果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
//插入排序法(Insertion Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
for (int i = 1; i < vec.length; i++) {
int j = i;
while (vec[j - 1] < vec[i]) {
vec[j] = vec[j - 1];
j--;
if (j <= 0) {
break;
}
}
vec[j] = vec[i];
}
}
end = System.currentTimeMillis();
System.out.println("插入法用時為:" + (end - begin));
//列印排序好的結果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
//快速排序法(Quick Sort)
Sort s = new Sort();
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
s.quicksort(vec, 0, 5);
}
end = System.currentTimeMillis();
System.out.println("快速法用時為:" + (end - begin));
//列印排序好的結果
for (int i = 0; i < vec.length; i++) {
System.out.println(vec[i]);
}
}
}以下是執行結果:選擇法用時為:23456
47
37
23
19
-5冒泡法用時為:17256
47
37
23
19
-5插入法用時為:7856
47
37
23
19
-5快速法用時為:29756
47
37
23
19
-5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10455649/viewspace-968941/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 排序演算法效能比較排序演算法
- 排序(3)--各類排序演算法的比較排序演算法
- php,asp,jsp,c,速度比較 (轉)PHPJS
- 三種高階比較排序演算法排序演算法
- 常用的比較排序演算法總結排序演算法
- Perl程式與c程式速度的比較(轉)C程式
- Java 8 比較器:如何對 List 排序Java排序
- 5種排序演算法效能比較總結排序演算法
- 艾偉_轉載:從ASP.NET的PHP執行速度比較談起ASP.NETPHP
- 圖形化排序演算法比較:快速排序、插入排序、選擇排序、氣泡排序排序演算法
- 堆排序和快速排序效能比較排序
- 定製排序和比較器排序排序
- 幾種排序的比較排序
- 氣泡排序、快速排序(遞迴&非遞迴)、堆排序演算法比較淺析排序遞迴演算法
- 11.經典O(n²)比較型排序演算法排序演算法
- 各大排序演算法效能比較及演示例項排序演算法
- 【演算法】6 比較排序之外學習新的線性時間排序演算法排序
- 氣泡排序、歸併排序與快速排序比較排序
- Java Comparable排序介面和Comparator比較器介面Java排序
- 學習筆記--- 比較排序之堆排序筆記排序
- ASP.NET 與 JAVA 的比較 (轉)ASP.NETJava
- Java不同壓縮演算法的效能比較Java演算法
- 【轉載】webservice框架xfire和axis的比較Web框架
- javascript訪問不同物件的速度比較JavaScript物件
- Java 比較器Java
- JAVA字串比較Java字串
- 同樣演算法的Python和C求解數獨程式速度比較演算法Python
- 排序演算法對比排序演算法
- 《演算法筆記》4. 堆與堆排序、比較器詳解演算法筆記排序
- C#中各種Lock的速度比較C#
- java比較日期大小Java
- Java和JavaSciprt比較Java
- java--BEAN比較JavaBean
- [java之list比較]Java
- JAVA IO效能比較Java
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 《排序演算法》——快速排序(Java)排序演算法Java
- JSON-RPC-Java 和DWR比較(轉)JSONRPCJava