如何在不使用java中任何现有排序方法的情况下将arraylist排序为递增顺序?

时间:2014-02-03 04:23:43

标签: java sorting arraylist

我需要将传入的整数值数组按递增顺序排序,但我不能使用任何现有的排序方法(因此没有Collections.sort(array))。

public void insert(Integer value) {
    for (int i = 0; i < array.size(); i++) {
        array.add(value);
    }
}

这可能是我复杂且失败的尝试。

for (int i = 0; i < array.size(); i++) {
    array.add(value);
}

if(array.size() >= 2) {
    value2 = array.get(0);
    for(int j = 0; j < array.size(); j++) {
        if(j != 0) {
            if(value2 < array.get(j)) {
                array.set(0, array.get(j));
                array.set(j, value);
            }
        }
    }  
}

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

正如评论中的人所说,有多种排序算法。

这是我在大学时使用过的最简单的算法之一(但是使用字符串数组):

您可以修改它以使用列表。

String temp = "";
for(int i = 0, len = array.length; i < len; i++)
{
    for(int j = i + 1; j < len; j++)
    {
        if(array[i].compareTo(array[j]) > 0)
        {
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }
}

答案 1 :(得分:0)

这是一个shellort的示例,它不是最快或最好的排序算法,但会在一个小列表上完成工作。

public void sort(Integer[] values)
{
    for (int gap = values.length / 2; gap > 0; 
            gap = gap == 2 ? 1 : (int) (gap / 2.2) )            
        {
            for (int i = gap; i < values.length; i++)
            {
                Integer tmp = values[i];
                int j = i;

                for (; j >= gap && tmp.compareTo(values[j-gap]) < 0; j -= gap)
                {
                    a[j] = a[j - gap];
                }
                a[j] = tmp;
            }
        }
}

http://en.wikipedia.org/wiki/Shellsort

答案 2 :(得分:0)

这是selection sort。它是最简单的排序算法之一(比插入慢,但比泡沫更快)。它将列表中的每个元素与列表中的其余元素进行比较。该列表将从开始到结束逐步排序(从i = 0开始)。

i正在与列表中的所有其他元素j进行比较,并且发现i索引处的值大于j处的值索引,值被交换,比较继续。

public static ArrayList<Integer> selectionSort(ArrayList<Integer> array) {

    for (int i = 0; i < array.size() - 1; i++)
    {
        for (int j = i + 1; j < array.size(); j++)
        {
            if (array.get(i) > array.get(j)) {

                int temp = array.get(j);
                array.set(j, array.get(i));
                array.set(i, temp);
            }
        }
    }
    return array;
}

我会在这里测试一下:

public static void main(String args[]) 
{
    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(2);
    list.add(5);
    list.add(1);
    list.add(7);
    list.add(19);
    list.add(4);
    list.add(1);

    list = selectionSort(list);

    for (int i : list) {
        System.out.println(i);
    }
}

输出:

1
1
2
4
5
7
19