如何为通用ArrayList实现插入排序方法?

问题描述

我打算创建一个简单的插入排序方法,该方法将一系列通用名称按字母顺序排序。这应该很简单,而且我已经在线上(包括在此站点上)在线查看了许多其他插入排序示例,但是尽管将我的代码逐行与其他版本进行了比较,但我仍然无法获得正确的输出,并且无法来确定我所做的工作与某些假定成功的插入排序方法不同。

以下代码是我无意更改的主要类:

  public static void main(String[] args) {
    GenericTools t = new ToolBox();
    ArrayList<String> data = new ArrayList<>();
    data.add("Carlos");
    data.add("Alice");
    data.add("Bob");
    data.add("Zebra");
    data.add("Fred");

    t.insertionSort(data);
    data.forEach(x -> System.out.println(x));
}

这是上面引用的GenericTools接口,用于记录:

public <T> void swap(ArrayList<T> data,int p1,int p2);

最后,这是我的代码,应该正确地对此列表进行排序:

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

但是,将产生以下输出:

Fred
Alice
Bob
Zebra
Fred

与正确的输出相反:

Alice
Bob
Carlos
Fred
Zebra

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)