演算法導論之快速排序

2022-03-19 19:57:00 字數 1816 閱讀 8036

1:  

/*

2:  

*author:justinzhang

3:  

*email:[email protected]

4:  

*time:2023年5月11日15:58:40

5:  

*discription:演算法導論第7章,快速排序演算法實現

6:  

change the previous c to cpp, and using template to make satisfy more data type

7:  

@justin at:2012-9-4 21:57:52

8:  

*/

9:
10:  #include
11:  

using

namespace std;

12:  

/*交換兩個數*/

13:  template void q_swap(t &x, t& y)
14:
19:
20:  

/*以陣列的最右邊元素a[r]為主元對陣列進行劃分,返回pivot,pivot左邊的元素都比a[r]小,右邊的元素

21:  

*都比a[r]大;

22:  

*/

23:  template int partition(t a,int p, int r)
24:
35:      }
36:      i++;
37:      q_swap(a[i],a[r]);
38:  

return i;

39:  }
40:
41:  

/*利用partition不斷的對陣列進行劃分,然後分別對劃分後的兩個部分進行排序(分治法思想)*/

42:  template void quicksort(t a,int low, int high)
43:
51:
52:  }
53:
54:  

int main()

55:  ;
58:  

int i;

59:      quicksort(a,0,7);
60:  

for(i=0;i<=7;i++)

61:          cout << a[i] << endl;
62:
63:  

/*----test double qsort----------*/

64:      cout << "test double quicksrot"

<< endl;

65:  

double data = ;

66:      quicksort(data ,0, sizeof(data)/sizeof(double)-1);
67:
68:  

for(i=0;i<=sizeof(data)/sizeof(double)-1;i++)

69:          cout << data[i] << endl;
70:
71:  

return 0;

72:  }
73:

演算法導論之快速排序

def partition a,p,r x a r 錨點 主元 i p 1 for j in range p,r if a j x i 1a i a j a j a i a i 1 a r a r a i 1 return i 1 defquicksort a,p,r if p r 分治 q par...

快速排序 演算法導論

對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 的排序演算法。雖然最壞情況時間的複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小,另外,它還能夠進行原址排序,甚至在虛存環...

演算法導論 快速排序

既然敢叫 快速排序 必然有其過人之處。事實上,它確實是最快的通用內部排序演算法。它由hoare於1962年提出,相對歸併排序來說不僅速度快,並且不需要輔助空間。對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 2 的排序演算法。雖然最壞情況時間複雜度差,但是快速排序通常是實際排...