parent
f38dcc7a03
commit
ee1a314d2a
@ -0,0 +1,30 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:12
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class Cat implements Comparable<Cat> {
|
||||
|
||||
private int weight, height;
|
||||
|
||||
public Cat(int weight) {
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Cat o) {
|
||||
if(this.weight < o.weight) return -1;
|
||||
else if(this.weight > o.weight) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Cat{" +
|
||||
"weight=" + weight +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:12
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class Cat2 {
|
||||
|
||||
private int weight, height;
|
||||
|
||||
public Cat2(int weight, int height) {
|
||||
this.weight = weight;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Cat2{" +
|
||||
"weight=" + weight +
|
||||
", height=" + height +
|
||||
'}';
|
||||
}
|
||||
|
||||
public int getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:56
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class CatHeightComparator implements Comparator<Cat2> {
|
||||
@Override
|
||||
public int compare(Cat2 o1, Cat2 o2) {
|
||||
if(o1.getHeight() < o2.getHeight()) return -1;
|
||||
else if(o1.getHeight() > o2.getHeight()) return 1;
|
||||
else return 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:56
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class CatWeightComparator implements Comparator<Cat2> {
|
||||
@Override
|
||||
public int compare(Cat2 o1, Cat2 o2) {
|
||||
if(o1.getWeight() < o2.getWeight()) return -1;
|
||||
else if(o1.getWeight() > o2.getWeight()) return 1;
|
||||
else return 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:05
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public interface Comparable<T> {
|
||||
int compareTo(T o);
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:50
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public interface Comparator<T> {
|
||||
public int compare(T o1, T o2);
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:12
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class Dog implements Comparable<Dog> {
|
||||
|
||||
private int food;
|
||||
|
||||
public Dog(int food) {
|
||||
this.food = food;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Dog o) {
|
||||
if(this.food < o.food) return -1;
|
||||
else if(this.food > o.food) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Dog{" +
|
||||
"food=" + food +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:06
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class Sorter {
|
||||
|
||||
public void sort(Comparable[] arr) {
|
||||
for(int i=0; i<arr.length-1; i++) {
|
||||
int minPos = i;
|
||||
for(int j=1; j<arr.length; j++) {
|
||||
minPos = arr[j].compareTo(arr[minPos])==-1 ? j : minPos;
|
||||
}
|
||||
swap(arr, i, minPos);
|
||||
}
|
||||
}
|
||||
|
||||
public void swap(Comparable[] arr, int i, int j) {
|
||||
Comparable temp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = temp;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Cat[] cats = new Cat[]{new Cat(5), new Cat(8), new Cat(3)};
|
||||
Dog[] dogs = new Dog[]{new Dog(6), new Dog(4), new Dog(9)};
|
||||
Sorter sorter = new Sorter();
|
||||
sorter.sort(dogs);
|
||||
System.out.println(Arrays.toString(dogs));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.msb.strategy;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022-10-06 17:06
|
||||
* @Description: com.msb.strategy
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public class Sorter2<T> {
|
||||
|
||||
public void sort(T[] arr, Comparator<T> comparator) {
|
||||
for(int i=0; i<arr.length-1; i++) {
|
||||
int minPos = i;
|
||||
for(int j=1; j<arr.length; j++) {
|
||||
minPos = comparator.compare(arr[j], arr[minPos])==-1 ? j : minPos;
|
||||
}
|
||||
swap(arr, i, minPos);
|
||||
}
|
||||
}
|
||||
|
||||
public void swap(T[] arr, int i, int j) {
|
||||
T temp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = temp;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Cat2[] cats = new Cat2[]{new Cat2(3, 5), new Cat2(5, 2), new Cat2(1, 4)};
|
||||
// CatWeightComparator comparator = new CatWeightComparator();
|
||||
CatHeightComparator comparator = new CatHeightComparator();
|
||||
Sorter2<Cat2> sorter = new Sorter2<Cat2>();
|
||||
sorter.sort(cats, comparator);
|
||||
System.out.println(Arrays.toString(cats));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue