Checking if an array is sorted in java (#7273)
* SortedArrayChecker * add recursivity method with custom object * change test names
This commit is contained in:
parent
4518645a1f
commit
fc260052b7
|
@ -0,0 +1,71 @@
|
||||||
|
package com.baeldung.array;
|
||||||
|
|
||||||
|
import com.baeldung.arraycopy.model.Employee;
|
||||||
|
|
||||||
|
public class SortedArrayChecker {
|
||||||
|
boolean isSorted(int[] array, int length) {
|
||||||
|
if (array == null || length < 2)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (array[length - 2] > array[length - 1])
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return isSorted(array, length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSorted(int[] array) {
|
||||||
|
for (int i = 0; i < array.length - 1; i++) {
|
||||||
|
if (array[i] > array[i + 1])
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSorted(String[] array, int length) {
|
||||||
|
if (array == null || length < 2)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (array[length - 2].compareTo(array[length - 1]) > 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return isSorted(array, length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSorted(String[] array) {
|
||||||
|
for (int i = 0; i < array.length - 1; ++i) {
|
||||||
|
if (array[i].compareTo(array[i + 1]) > 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSortedByName(Employee[] array) {
|
||||||
|
for (int i = 0; i < array.length - 1; ++i) {
|
||||||
|
if (array[i].getName().compareTo(array[i + 1].getName()) > 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSortedByAge(Employee[] array) {
|
||||||
|
for (int i = 0; i < array.length - 1; ++i) {
|
||||||
|
if (array[i].getAge() > (array[i + 1].getAge()))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isSortedByAge(Employee[] array, int length) {
|
||||||
|
if (array == null || length < 2)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (array[length - 2].getAge() > array[length - 1].getAge())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return isSortedByAge(array, length - 1);
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ public class Employee implements Serializable {
|
||||||
private static final long serialVersionUID = -2454619097207585825L;
|
private static final long serialVersionUID = -2454619097207585825L;
|
||||||
private int id;
|
private int id;
|
||||||
private String name;
|
private String name;
|
||||||
|
private int age;
|
||||||
|
|
||||||
public Employee() {
|
public Employee() {
|
||||||
}
|
}
|
||||||
|
@ -15,10 +16,24 @@ public class Employee implements Serializable {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Employee(int id, String name, int age) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAge(int age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
public void setId(int id) {
|
public void setId(int id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
package com.baeldung.array;
|
||||||
|
|
||||||
|
import com.baeldung.arraycopy.model.Employee;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
class SortedArrayCheckerUnitTest {
|
||||||
|
|
||||||
|
private static final int[] INTEGER_SORTED = {1, 3, 5, 7, 9};
|
||||||
|
private static final int[] INTEGER_NOT_SORTED = {1, 3, 11, 7};
|
||||||
|
|
||||||
|
private static final String[] STRING_SORTED = {"abc", "cde", "fgh"};
|
||||||
|
private static final String[] STRING_NOT_SORTED = {"abc", "fgh", "cde", "ijk"};
|
||||||
|
|
||||||
|
private final Employee[] EMPLOYEES_SORTED_BY_NAME = {
|
||||||
|
new Employee(1, "Carlos", 26),
|
||||||
|
new Employee(2, "Daniel", 31),
|
||||||
|
new Employee(3, "Marta", 27)};
|
||||||
|
|
||||||
|
private final Employee[] EMPLOYEES_NOT_SORTED_BY_NAME = {
|
||||||
|
new Employee(1, "Daniel", 31),
|
||||||
|
new Employee(2, "Carlos", 26),
|
||||||
|
new Employee(3, "Marta", 27)};
|
||||||
|
|
||||||
|
private final Employee[] EMPLOYEES_SORTED_BY_AGE = {
|
||||||
|
new Employee(1, "Carlos", 26),
|
||||||
|
new Employee(2, "Marta", 27),
|
||||||
|
new Employee(3, "Daniel", 31)};
|
||||||
|
|
||||||
|
private final Employee[] EMPLOYEES_NOT_SORTED_BY_AGE = {
|
||||||
|
new Employee(1, "Marta", 27),
|
||||||
|
new Employee(2, "Carlos", 26),
|
||||||
|
new Employee(3, "Daniel", 31)};
|
||||||
|
|
||||||
|
private SortedArrayChecker sortedArrayChecker;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
sortedArrayChecker = new SortedArrayChecker();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenIntegerArray_thenReturnIfItIsSortedOrNot() {
|
||||||
|
assertThat(sortedArrayChecker.isSorted(INTEGER_SORTED)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSorted(INTEGER_NOT_SORTED)).isEqualTo(false);
|
||||||
|
|
||||||
|
assertThat(sortedArrayChecker.isSorted(INTEGER_SORTED, INTEGER_SORTED.length)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSorted(INTEGER_NOT_SORTED, INTEGER_NOT_SORTED.length)).isEqualTo(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenStringArray_thenReturnIfItIsSortedOrNot() {
|
||||||
|
assertThat(sortedArrayChecker.isSorted(STRING_SORTED)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSorted(STRING_NOT_SORTED)).isEqualTo(false);
|
||||||
|
|
||||||
|
assertThat(sortedArrayChecker.isSorted(STRING_SORTED, STRING_SORTED.length)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSorted(STRING_NOT_SORTED, STRING_NOT_SORTED.length)).isEqualTo(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEmployeeArray_thenReturnIfItIsSortedOrNot() {
|
||||||
|
assertThat(sortedArrayChecker.isSortedByName(EMPLOYEES_SORTED_BY_NAME)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSortedByName(EMPLOYEES_NOT_SORTED_BY_NAME)).isEqualTo(false);
|
||||||
|
|
||||||
|
assertThat(sortedArrayChecker.isSortedByAge(EMPLOYEES_SORTED_BY_AGE)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSortedByAge(EMPLOYEES_NOT_SORTED_BY_AGE)).isEqualTo(false);
|
||||||
|
|
||||||
|
assertThat(sortedArrayChecker.isSortedByAge(EMPLOYEES_SORTED_BY_AGE, EMPLOYEES_SORTED_BY_AGE.length)).isEqualTo(true);
|
||||||
|
assertThat(sortedArrayChecker.isSortedByAge(EMPLOYEES_NOT_SORTED_BY_AGE, EMPLOYEES_NOT_SORTED_BY_AGE.length)).isEqualTo(false);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue