Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Infinite Loop

  1. Nov 22, 2007 #1
    Hi, I am writing a function that takes in a real data array and a key partition value, which will rearrange the array so that elements with a lower value than x are placed before the elements with values >= the partition value. It then returns the index of the last element of the array with a value less than the partition value.

    We were given some pseudo-code which uses the idea that we start from the left and right and simultaneously switch elements using two loops excited together.

    Code (Text):
    integer function partition_data( xdata, xmiddle )
        implicit none

       real, dimension(:) :: xdata
       real :: xmiddle !INTENT?

       integer ::  l = 1
       integer ::  r = 16
       real :: temp
           if (xdata(l) < xmiddle) then
              if (l == r) then
                 partition_data = l
              end if    
                 l = l + 1
                 if (xdata(r) >= xmiddle) then
                    if (l == r) then
                       partition_data = l - 1
                    end if
                    r = r - 1
                    temp = xdata(l)
                    xdata(l) = xdata(r)
                    xdata(r) = temp
                 end if
              end do
           end if
        end do
      end function partition_data
    With the xdata array

    xdata = (/ 0.00392, 0.0251, 0.453, 0.667, 0.963, 0.838, 0.335, 0.975, &
    0.796, 0.833, 0.345, 0.871, 0.0899, 0.888, 0.701, 0.735 /)

    The xmiddle was set to 0.5 in the main test program.

    When I compile, I seem to get an infinite loop and I cannot find where it is.

    If anyone can spot where I went wrong, that would be great.

    Thanks in advance!
  2. jcsd
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted