Почему моя программа сортировки вставок возвращает неправильные элементы? - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть задание, в котором я должен реализовать класс, который имеет три метода, предназначенных для выполнения следующего (по порядку):

  1. Поменяйте местами предоставленные ему элементы p1 и p2

  2. Просто выполните сортировку вставкой

  3. Также выполните сортировку вставкой, но верните только данные от начала int до конца int (-1)

Мой класс:

public class ToolBox implements GenericTools{

    @Override
    public <T> void swap(ArrayList<T> data, int p1, int p2) {
        int relic=p1;
        p2=p1;
        p1=relic;
    }

    @Override
    public <T extends Comparable<T>> void insertionSort(ArrayList<T> data) {
        for (int i=1;i<data.size();i++){
            T n= data.get(i);
            int x=i-1;
            while(x>-1){
                if (n.compareTo( data.get(i))>0){
                    break;
                }
                data.set(x+1,data.get(i));
                x--;
            }
            data.set(x+1,n);
        }
      }


    @Override
    public <T extends Comparable<T>> ArrayList<T> insertionSort(ArrayList<T> data, int start, int end) {
        for (int i=1;i<data.size();i++){
            T n= data.get(i);
            int x=i-1;
            while(x>-1){
                if (n.compareTo( data.get(i))>0){
                    break;
                }
                data.set(x+1,data.get(i));
                x--;
            }
            data.set(x+1,n);
        }
        ArrayList <T> returned=new ArrayList<>();
        for (int a=start;a<end;a++){
            returned.add(data.get(a));
        return returned;
    }

Результат, который я получаю:

Fred
Fred
Fred
Fred
Fred
---
Fred
Fred
Fred
---
Fred
Fred

Vs. результат, который я должен получить:

Alice
Bob
Carlos
Fred
Zebra
---
Bob
Carlos
Fred
---
Carlos
Fred
...