Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2e7ac14

Browse files
Conclusion of the custom implementation of QuickSort
1 parent 7cf5ed7 commit 2e7ac14

File tree

2 files changed

+36
-29
lines changed

2 files changed

+36
-29
lines changed
Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,49 @@
11
package br.com.zevolution.algorithms.sorting.quicksort;
22

3-
import java.util.Arrays;
4-
53
import br.com.zevolution.algorithms.sorting.Product;
4+
import br.com.zevolution.algorithms.sorting.Sort;
5+
6+
public class QuickSort implements Sort {
7+
8+
@Override
9+
public Product[] sort(Product[] products, int length) {
10+
Product[] array = products.clone();
11+
this.quickSort(array, 0, length);
12+
return array;
613

7-
public class QuickSort {
8-
9-
public static void main(String[] args) {
10-
11-
Product[] products = {
12-
new Product("iMac", 30000),
13-
new Product("Keyboard", 100),
14-
new Product("iPhone 12 Pro Max Ultra Uou", 10000),
15-
new Product("Mouse", 50),
16-
new Product("Notebook", 3500)
17-
};
18-
19-
quickSort(products, 0, products.length);
20-
21-
System.out.println(Arrays.toString(products));
2214
}
2315

24-
private staticvoid quickSort(Product[] products, int start, int end) {
16+
private void quickSort(Product[] products, int start, int end) {
2517
int length = end - start;
2618
if (length > 1) {
27-
int pivot = partitionProducts(products, start, end);
28-
quickSort(products, start, pivot);
29-
quickSort(products, pivot + 1, end);
19+
int pivot = this.partitionProducts(products, start, end);
20+
this.quickSort(products, start, pivot);
21+
this.quickSort(products, pivot + 1, end);
3022
}
3123
}
3224

33-
private staticint partitionProducts(Product[] products, int start, int end) {
25+
private int partitionProducts(Product[] products, int start, int end) {
3426
int cheapest = start;
35-
27+
3628
Product pivotProduct = products[end - 1];
3729
for (int current = start; current < end - 1; current++) {
3830
Product currentProduct = products[current];
3931
if (currentProduct.getPrice() <= pivotProduct.getPrice()) {
40-
swap(products, current, cheapest);
32+
this.swap(products, current, cheapest);
4133
cheapest++;
4234
}
4335
}
44-
45-
swap(products, end - 1, cheapest);
46-
36+
37+
this.swap(products, end - 1, cheapest);
38+
4739
return cheapest;
4840
}
4941

50-
private staticvoid swap(Product[] products, int from, int to) {
42+
private void swap(Product[] products, int from, int to) {
5143
Product productFrom = products[from];
5244
Product productTo = products[to];
5345
products[from] = productTo;
5446
products[to] = productFrom;
5547
}
5648

57-
}
49+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package br.com.zevolution.algorithms.sorting.quicksort;
2+
3+
import static br.com.zevolution.algorithms.sorting.SortTester.testSort;
4+
import static org.junit.Assert.*;
5+
6+
import org.junit.Test;
7+
8+
public class QuickSortTest {
9+
10+
@Test
11+
public void should_Sort_Array() {
12+
testSort(new QuickSort());
13+
}
14+
15+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /