(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 堆排序是一種樹...