排序演算法 快速排序(及小改進)

2021-10-04 19:32:53 字數 1400 閱讀 6907

/*排序演算法----快速排序(常見版)*/

//演算法思想:每次都將第乙個資料放到它本應該在的位置

#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...