Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用java中任何现有排序方法的情况下按递增顺序对arraylist进行排序?_Java_Sorting_Arraylist - Fatal编程技术网

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

如何在不使用java中任何现有排序方法的情况下按递增顺序对arraylist进行排序?,java,sorting,arraylist,Java,Sorting,Arraylist,我需要将传入整数值数组按递增顺序排序,但我不能使用任何现有的排序方法(因此没有Collections.sort(array)) public void insert(整数值){ 对于(int i=0;i

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

public void insert(整数值){
对于(int i=0;i
这是我可能过于复杂和失败的尝试

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);
            }
        }
    }  
}
for(int i=0;i=2){
value2=array.get(0);
对于(int j=0;j

任何帮助都将不胜感激

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

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

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

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;
        }
    }
}
String temp=”“;
for(int i=0,len=array.length;i0
{
温度=阵列[i];
数组[i]=数组[j];
数组[j]=温度;
}
}
}

这是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;
            }
        }
}
public void排序(整型[]值)
{
对于(int gap=values.length/2;gap>0;
差距=差距==2?1:(int)(差距/2.2))
{
for(int i=gap;i=gap&&tmp.compareTo(值[j-gap])<0;j-=gap)
{
a[j]=a[j-间隙];
}
a[j]=tmp;
}
}
}
这里有一个例子。这是最简单的排序算法之一(比插入算法慢,但比气泡算法快)。它将列表中的每个元素与列表中的其余元素进行比较。列表将从头到尾逐步排序(从
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;
}

有很多排序算法可供选择。尝试实现什么排序算法?如果你不想在谷歌上搜索,那么至少先在一张纸上写下逻辑。你可能在寻找插入排序吗?这就是插入的本意吗?如果是这样,为什么不调用它呢?您可能不想使用If(j!=0),而只想使用for(int j=1;j)开始索引元素1处的数组
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);
    }
}