debugged quicksort algorithm slightly (now able to do multiple identical keys)
This commit is contained in:
parent
f055a7b037
commit
f1653ad88c
|
@ -74,12 +74,12 @@
|
|||
RECURSIVE SUBROUTINE qsort(a, istart, iend)
|
||||
|
||||
implicit none
|
||||
integer(pInt), dimension(*,*) :: a
|
||||
integer(pInt), dimension(:,:) :: a
|
||||
integer(pInt) :: istart,iend,ipivot
|
||||
|
||||
if (istart < iend) then
|
||||
ipivot = math_partition(a,istart, iend)
|
||||
call qsort(a, istart, ipivot)
|
||||
call qsort(a, istart, ipivot-1)
|
||||
call qsort(a, ipivot+1, iend)
|
||||
endif
|
||||
return
|
||||
|
@ -92,7 +92,7 @@
|
|||
integer(pInt) FUNCTION math_partition(a, istart, iend)
|
||||
|
||||
implicit none
|
||||
integer(pInt), dimension(*,*) :: a
|
||||
integer(pInt), dimension(:,:) :: a
|
||||
integer(pInt) :: istart,iend,d,i,j,k,x,tmp
|
||||
|
||||
d = size(a,1) ! number of linked data
|
||||
|
@ -121,7 +121,7 @@
|
|||
a(k,istart) = a(k,j)
|
||||
a(k,j) = tmp
|
||||
enddo
|
||||
partition = j
|
||||
math_partition = j
|
||||
return
|
||||
endif
|
||||
enddo
|
||||
|
@ -1150,7 +1150,6 @@
|
|||
character ( len = * ) name
|
||||
integer(pInt) ndim
|
||||
integer(pInt), save :: ndim_save = 0
|
||||
integer(pInt) prime
|
||||
integer(pInt), save :: seed = 1
|
||||
integer(pInt) value(*)
|
||||
|
||||
|
|
Loading…
Reference in New Issue