Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 69 additions & 16 deletions lesson2/src/Array.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import java.util.Arrays;

public class Array {
private int[] arr;
Expand Down Expand Up @@ -41,7 +42,7 @@ public void set(int index, int value) {
}

public void append(int value) {
if (size >= arr.length - 1) {
if (size > arr.length - 1) {
int[] temp = arr;
arr = new int[size * 2];
System.arraycopy(temp, 0, arr, 0, size);
Expand All @@ -57,17 +58,31 @@ public boolean remove() {
}

// homework
// public boolean delete(int index) {
//
// }
//
// public boolean deleteAll(int value) {
//
// }
//
// public boolean deleteAll() {
//
// }
public boolean deleteAt(int index) {
if (index < 0 || index > size - 1)
throw new IndexOutOfBoundsException();
for (int i = index; i < size - 1; i++) {
arr[i] = arr[i + 1];
}
size--;
return true;
}

public boolean deleteAll(int value) {
boolean result = false;
for (int i = size - 1; i >= 0; i--) {
if (arr[i] == value) {
deleteAt(i);
result = true;
}
}
return result;
}

public boolean deleteAll() {
size = 0;
return true;
}

public boolean isInArray(int value) {
for (int i = 0; i < size; i++) {
Expand Down Expand Up @@ -106,17 +121,55 @@ private void swap(int a, int b) {
arr[b] = temp;
}

public void sortBubble() {
// O(n + k)
//n - number of elements in input array
//k - range of input data
public void countingSort() {
int[] result = new int[size];
int range;
int min = arr[0];
int max = arr[0];
for (int i = 0; i < size; i++) {
if (arr[i] < min)
min = arr[i];
if (arr[i] > max)
max = arr[i];
}
range = max - min + 1;
int[] bucket = new int[range];
for (int i = 0; i < size; i++) {
bucket[arr[i] - min]++;
}

System.out.println(Arrays.toString(bucket));

for (int i = 1; i < bucket.length; i++) {
bucket[i] = bucket[i] + bucket[i - 1];
}

System.out.println(Arrays.toString(bucket));

for (int i = 0; i < size; i++) {
for (int j = 0; j < size - 1; j++) {
result[bucket[arr[i] - min] - 1] = arr[i];
bucket[arr[i] - min]--;
}
System.out.println(Arrays.toString(result));
arr = result;
isSorted = true;
}

// O(n^2)
public void sortBubble() {
for (int i = size - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1])
swap(j, j + 1);

}
}
isSorted = true;
}

// O(n^2)
public void sortSelect() {
int f;
for (int i = 0; i < size; i++) {
Expand All @@ -129,7 +182,7 @@ public void sortSelect() {
}
isSorted = true;
}

//O(n^2)
public void sortInsert() {
for (int i = 1; i < size; i++) {
int temp = arr[i];
Expand Down
27 changes: 14 additions & 13 deletions lesson2/src/Second.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,22 @@ public static void main(String args[]) {
// System.out.println(arr.length);
// System.out.println(arr[4]);
// System.out.println(Arrays.toString(arr2));

Array arr = new Array(5);
arr.append(1);
arr.append(2);
arr.append(3);
System.out.println(arr);
arr.append(4);
arr.append(5);
arr.append(6);
arr.append(7);
arr.append(8);
System.out.println(arr);
arr.remove();
arr.remove();
System.out.println(arr);

arr.append(5);
// System.out.println(arr);
arr.append(4);
arr.append(-5);
// arr.append(6);
// arr.append(7);
// arr.append(8);
// System.out.println(arr);
// arr.remove();
// arr.remove();
// System.out.println(arr);
arr.countingSort();
// System.out.println(arr);
}
}