19 integer(kind=kint),
intent(inout) :: array(:)
20 integer(kind=kint),
intent(in) :: istart, iend
21 integer(kind=kint) :: left, right, center
22 integer(kind=kint) :: pivot, tmp
23 if (istart >= iend)
return
24 center = (istart + iend) / 2
29 do while (array(left) < pivot)
32 do while (pivot < array(right))
35 if (left >= right)
exit
37 array(left) = array(right)
48 integer(kind=kint),
intent(inout) :: array(:)
49 integer(kind=kint),
intent(in) :: istart, iend
50 integer(kind=kint),
intent(out) :: ndup
51 integer(kind=kint) :: i
54 if (array(i) == array(i - 1 - ndup))
then
56 else if (ndup > 0)
then
57 array(i - ndup) = array(i)
64 integer(kind=kint),
intent(in) :: array(:)
65 integer(kind=kint),
intent(in) :: istart, iend
66 integer(kind=kint),
intent(in) :: val
67 integer(kind=kint),
intent(out) :: idx
68 integer(kind=kint) :: center, left, right, pivot
72 if (left > right)
then
76 center = (left + right) / 2
81 else if (pivot < val)
then