public class BubbleSort<Pojazd> implements ListSorter<Pojazd>{
private final Comparator<Pojazd> _comarator;
public BubbleSort(Comparator<Pojazd> comparator){
_comarator = comparator; }
@Override
public ArrayList<Pojazd> sort(ArrayList<Pojazd> list) {
int size = list.size();
for (int pass = 1; pass<size; pass++){
for (int left = 0; left < (size-pass); left++ ){
int right = left+1;
if (_comarator.compare(list.get(left), list.get(right))>0)
swap(list,left,right);
}
}
return null;
}
public void swap(ArrayList<Pojazd> list, int left, int right){
Pojazd temp = list.get(left);
list.set(left,list.get(right));
list.set(right, temp);
}}
public class Main {
public static void main(String [] args){
ArrayList<Pojazd> arrayList = new ArrayList();
arrayList.add(new Pojazd("Jeep"));
arrayList.add(new Pojazd("Volkswagen"));
arrayList.add(new Pojazd("Ford"));
arrayList.add(new Pojazd("Mercedes"));
arrayList.add(new Pojazd("Audi"));
arrayList.add(new Pojazd("Nissan"));
System.out.println(arrayList);
BubbleSort bubbleSort = new BubbleSort(new Comparator<Pojazd>() {
@Override
public int compare(Pojazd left, Pojazd right) {
return 0;
}
});
bubbleSort.sort(arrayList);
System.out.println(arrayList);
}
Вывод
[Nazwa: Jeep, Nazwa: Volkswagen, Nazwa: Ford, Nazwa: Mercedes, Nazwa: Audi, Nazwa: Nissan]
[Nazwa: Jeep, Nazwa: Volkswagen, Nazwa: Ford, Nazwa: Mercedes, Nazwa: Audi, Nazwa: Nissan]
Имлементирует :
import java.util.ArrayList;
public interface ListSorter<T> {
public ArrayList<T> sort(ArrayList<T> list);
}
Тип
public class Pojazd {
private String nazwa;
public Pojazd(String n) {
this.nazwa = n;
}
public String getName() {
return nazwa;
}
public void setName(String name) {
this.nazwa = nazwa;
}
public String toString() {
return "Nazwa: " + this.nazwa ;
}
}
Подскажите пожалуйста, что вставлять в конструктор (там где Comparator), и как протестить время работы алгоритма, и почему он не сортирует
Ваша сортировка не работает, потому что компаратор всегда возвращает 0.
Чтобы список отсортировался возвращайте, например, разность длин названий:
return left.getName().length() - right.getName().length();
Время работы алгоритма можно замерить путём фиксации времени до и после вызова bubbleSort.sort(arrayList);
То есть:
long start = System.currentTimeMillis();
bubbleSort.sort(arrayList);
long end = System.currentTimeMillis();
System.out.println(end - start);
Метод System.currentTimeMillis()
возвращает время в миллисекундах, если нужно время в наносекундах, то используйте System.nanoTime()
import java.util.ArrayList;
import java.util.List;
public class Pojazd {
private String name;
public Pojazd(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Nazwa: " + this.name;
}
public static List<Pojazd> bubbleSort(List<Pojazd> pojazds) {
for (int i = 0; i < pojazds.size() - 1; i++) {
for (int j = 0; j < pojazds.size() - i - 1; j++) {
if (pojazds.get(j).getName().length() > pojazds.get(j + 1).getName().length()) {
Pojazd temp = pojazds.get(j);
pojazds.set(j, pojazds.get(j + 1));
pojazds.set(j + 1, temp);
}
}
}
return pojazds;
}
public static void main(String[] args) {
List<Pojazd> pojazds = new ArrayList<>();
pojazds.add(new Pojazd("Jeep"));
pojazds.add(new Pojazd("Volkswagen"));
pojazds.add(new Pojazd("Ford"));
pojazds.add(new Pojazd("Mercedes"));
pojazds.add(new Pojazd("Audi"));
pojazds.add(new Pojazd("Nissan"));
System.out.println(Pojazd.bubbleSort(pojazds));
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется конфиг для CircleCIНа локальной машине при выполнении CircleCI, все проходит
Я задался вопросом, как правильно хранить кэш ? Тоесть я хочу услышать предложение как лучше всего его хранитьНапример я думаю так: Качаем...
Имеется идея сделать на кнопке что-то вроде "напоминания о пропущенных" как на приложенном изображенииКак можно прицепить к кнопке такое...