-
Notifications
You must be signed in to change notification settings - Fork 0
/
unsortedArray.java
86 lines (81 loc) · 3 KB
/
unsortedArray.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
public class unsortedArray {
/**
* Shows an array with a logical size
*
* @param tab The array
* @param logicalSize The logical size of the array
*/
public static void showArray(String[] tab, int logicalSize) {
for (int i = 0; i < logicalSize; i++) {
System.out.print(tab[i] + " ");
}
System.out.println();
}
/**
* Add an item in an unsorted array
*
* @param tab The unsorted array
* @param logicalSize The logical size of the array
* @param item The item we want to add in the array
* @return The new logical size of the array
*/
public static int addItem(String[] tab, int logicalSize, String item) {
if (logicalSize == tab.length) {
throw new IllegalArgumentException("<error> No free place in the array !");
}
if (alreadyExist(tab, logicalSize, item)) {
System.out.println("Item already exists in the array !");
} else {
tab[logicalSize] = item;
logicalSize++;
}
return logicalSize;
}
/**
* Remove an item from an unsorted array
*
* @param tab The unsorted array
* @param logicalSize The logical size of the array
* @param item THe item we want to remove from the array
* @return The new logical size of the array
*/
public static int removeItem(String[] tab, int logicalSize, String item) {
int pos = findIndex(tab, logicalSize, item);
if (pos < 0) {
throw new IllegalArgumentException("<error> The item doesn't exist in the array !");
}
tab[pos] = tab[logicalSize - 1];
return logicalSize - 1;
}
/**
* Figures out if an item already exists in an unsorted array
*
* @param tab The unsorted array
* @param logicalSize The logical size of the array
* @param item The item we are looking for
* @return True or false if the item exists in the array or not
*/
public static boolean alreadyExist(String[] tab, int logicalSize, String item) {
int currentPos = 0;
while (currentPos < logicalSize && !tab[currentPos].equals(item)) {
currentPos++;
}
return currentPos < logicalSize;
}
/**
* Finds the index of a certain value in an unsorted array with a logical size
* If not found, return -1
*
* @param tab The unsorted array
* @param val The value to find
* @param logicalSize The logical size of the array
* @return The index of the value in the array (-1 if !exist)
*/
public static int findIndex(String[] tab, int logicalSize, String item) {
int currentPos = 0;
while (currentPos < logicalSize && !tab[currentPos].equals(item)) {
currentPos++;
}
return currentPos < logicalSize ? currentPos : -1;
}
}