Sonar sensor to arduino to servo

#include <Servo.h>
const int trigger=3;
const int echo=2;
const int nAngles = 5;

Servo xServo;
const int angles [nAngles] = {0, 45, 90, 135, 180};
float ranges [nAngles];

void setup()
{
  Serial.begin(9600);
  pinMode(trigger,OUTPUT);
  pinMode(echo,INPUT);
  xServo.attach(10);
}

void loop()
{
  for (int i = 0; i < nAngles; ++i) {
    xServo.write (angles [i]);
    delay (500);
    ranges [i] = getRange ();  
    delay(50);
  }

  for (int i = 0; i < nAngles; ++i) {
    Serial.println(ranges [i]);
  }
  
  if((ranges[0]<ranges[1]) || (ranges[0]<ranges[2]) || (ranges[0]<ranges[3]) || (ranges[0]<ranges[4]))
  {
    xServo.write(0);
    delay(2000);
  }  
  else if((ranges[1]<ranges[0]) || (ranges[1]<ranges[2]) || (ranges[1]<ranges[3]) || (ranges[1]<ranges[4]))
  {
    xServo.write(45);
    delay(2000);
  }
  else if((ranges[2]<ranges[0]) || (ranges[2]<ranges[1]) || (ranges[2]<ranges[3]) || (ranges[2]<ranges[4]))
  {
    xServo.write(90);
    delay(2000);
  }
  else if((ranges[3]<ranges[0]) || (ranges[3]<ranges[1]) || (ranges[3]<ranges[2]) || (ranges[3]<ranges[4]))
  {
    xServo.write(135);
    delay(2000);
  }
  else if((ranges[4]<ranges[0]) || (ranges[4]<ranges[1]) || (ranges[4]<ranges[2]) || (ranges[4]<ranges[3]))
  {
    xServo.write(180);
    delay(2000);
  }
}

float getRange ()
{
  digitalWrite(trigger,LOW);
  delayMicroseconds(5);
  digitalWrite(trigger,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger,LOW);
 
  return pulseIn(echo,HIGH) * 0.0001657;
}

Here is my code sir. The servo is not facing the nearest range. Is my program correct?..
just edit it from the code you gave me sir.. :))

Moderator edit: Please Use CODE TAGS when posting code. Click on the # icon on the editor's toolbar, and paste your code between the tags which appear.