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