/*排序演算法----快速排序(常見版)*/
//演算法思想:每次都將第乙個資料放到它本應該在的位置
#include
using namespace std;
template
/*泛型程式設計改進;注意這句話要寫在函式的前面*/
/*具體怎麼分治*/
intsort
(t arr,
int left,
int right)
}swap
(arr[left]
,arr[mid]);
return mid;
}template
/*泛型程式設計改進;注意這句話要寫在函式的前面*/
/*分治法則*/
void
quicksort
(t arr,
int left,
int right)
}int
main()
;quicksort
(arr,0,
9);for
(int t=
0;t<=
9;t++
)system
("pause");
return0;
}
/*排序演算法----快速排序(小改進)*/
#include
#include
#include
using namespace std;
template
/*泛型程式設計改進;注意這句話要寫在函式的前面*/
/*具體怎麼分治*/
intsort
(t arr,
int left,
int right)
}swap
(arr[left]
,arr[j]);
return j;
}template
/*泛型程式設計改進;注意這句話要寫在函式的前面*/
/*分治法則*/
void
quicksort
(t arr,
int left,
int right)
template
/*泛型程式設計改進;注意這句話要寫在函式的前面*/
/*分治法則*/
void
newquicksort
(t arr,
int n)
intmain()
;newquicksort
(arr,10)
;for
(int t=
0;t<=
9;t++
)system
("pause");
return0;
}
快速排序改進
快速排序平均複雜度為o nlgn 最壞情況為o n 2 即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,所以快速排序時間複雜度下界為o nlogn 最壞情況下為o n 2 1.如果在排序時選取最後乙個元素為基準,則可以通過以下方法來避免劃分的不平衡。int ...
快速排序改進
public class quicksort exec a,lo,j return j 用分治法來進行快速排序 public static void sort comparable a,int lo,int hi public static void show comparable a system...
快速排序的改進 隨機快速排序
快速排序是一種高效的排序方法,但是如果我們的輸入陣列是排好序的乙個陣列,快速排序的執行時間就會變成o n 2 雖然這種情況很少會出現,但我們還是應該避免。演算法導論書籍中的修改方法 在排序方法中隨機化選取主元。根據計算,改進後的方法時間複雜度的期望為o nlgn 下面是改進後的 快速排序 publi...