快速排序,歸併排序,堆排序

2021-10-19 02:52:36 字數 1508 閱讀 7711

(l+r)>>1在奇數長度陣列的中間,偶數長度陣列的左半邊最後乙個,極限情況下陣列只有兩個數,i遇到第乙個數就會停下,此時模擬i,j下標的數有無交換的情況,會發現j在停下來時都位於第乙個數的位置,因此用j,j+1才不會越界

(l+r+1)>>1在奇數長度陣列的中間往右第乙個,偶數長度陣列的右半邊第乙個,極限情況下陣列只有兩個數,當沒有交換時,i走到最後乙個數才停下,j停在最後乙個數,因此用i-1,i才不會越界

#

include

using

namespace std;

const

int n=

1e8+10;

int a[n]

;void

quick_sort

(int l,

int r)

quick_sort

(l,j)

;quick_sort

(j+1

,r);

}int

main()

#

include

#include

using

namespace std;

const

int n=

1e8+10;

int a[n]

,t[n]

;void

merge_sort

(int l,

int r)

while

(i<=mid)t[k++

]=a[i++];

while

(j<=r)t[k++

]=a[j++];

for(i=l,j=

0;i<=r;

++i,

++j)

a[i]

=t[j];}

intmain()

#

include

#include

using

namespace std;

const

int n=

1e8+10;

int len,a[n]

;void

down

(int x)

}int

main()

puts(""

);return0;

}

#

include

#include

using

namespace std;

const

int n=

1e8+10;

int len,a[n]

;void

down

(int x)

}int

main()

while

(n--

)puts(""

);return0;

}

快速排序 堆排序 歸併排序

快速排序 includeusing namespace std int a 8 int sz sizeof a sizeof int int partition int a,int p,int r int main const int sz sizeof a sizeof int 堆化 保持最大堆的...

關於快速排序,歸併排序,堆排序

1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...

堆排序 快速排序 歸併排序總結

二分查詢及其擴充套件應用場景 大端和小端的問題 2012 09 21 11 33 41 分類 演算法 資料結構 標籤 演算法資料結構 歸併排序 內部排序面試 舉報 字型大小大中小 訂閱這三個排序以前都寫過,快速排序還寫了遞迴版和迭代版。現在在這裡做一下總結。堆排序 heap sort 堆排序是一種樹...