如何在不使用Java中使用任何现有排序方法的情况下将阵列列表分类为增加的顺序



我需要将传入整数值的数组分类为增加的顺序,但是我不能使用任何现有的排序方法(因此没有collections.sort.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);
            }
        }
    }  
}

任何帮助将不胜感激!

正如人们所说的那样,有多种排序算法。

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

您可以将其修改以使用列表。

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;
        }
    }
}

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

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

这是一种选择。这是最简单的排序算法之一(比插入慢,但比气泡快)。它将列表中的每个元素与列表中的其余元素进行比较。该列表将从开始到结尾逐渐排序(以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

相关内容

  • 没有找到相关文章

最新更新