java - Java中对数组进行排序的方法

标签 java arrays sorting

我一直在研究一种方法,可以将数组从最低到最高排序。 我想出了下面的代码,但正如您可能猜到的那样,它没有达到我的预期。

我希望应用的逻辑如下:

假设我有一个数组,例如数组 {4,3,1,2,5} 例如,代码会将数组 [0](在本例中为 4)与数组中的每个元素进行比较,

array[0]>array[0] (4>4=false), 
array[0]>array[1] (4>3)= +1counter, 
array[0]>array[2] (4>1)= +1counter, 
array[0]>array[3] (4>2)= +1counter,
array[0]>array[4] (4>5=false)

counter = 3

因此,由于计数器值现在为 3,因此在新数组(array2 或 arrayOrdered)中,数字 4 将位于第三个索引中。

我该如何解决?非常感谢任何帮助!

public static int[] OrderArray(int[] array)
{

    int[] array2=new int[array.length];

    for (int i=0; i<array.length; i++)
    {
        int place=0;
        for (int j=0; j<array.length;j++)
        {
            if (array[i]> array[j])
            {
                place = place+1;
            }
            array2[place] = array[i];
        }

    }
    return array2;
}

最佳答案

您要执行的操作称为排序,您可以使用许多具有不同特征的已知排序算法来完成您想要的操作。

您可以在这里阅读许多不同的排序算法:https://en.wikipedia.org/wiki/Sorting_algorithm

Java 本身内置了排序功能,您可以使用 Arrays.sort 方法对数组进行排序,该方法使用非常快速且众所周知的数组Quicksort 算法的整数。

正如其他评论员所讨论的那样,您的排序算法似乎有缺陷,总体上似乎最接近插入排序 算法,您可能需要查看该算法以获得一些想法:https://en.wikipedia.org/wiki/Insertion_sort

Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. At each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there. It repeats until no input elements remain.

上面链接的伪代码:

i ← 1
while i < length(A)
    j ← i
    while j > 0 and A[j-1] > A[j]
        swap A[j] and A[j-1]
        j ← j - 1
    end while
    i ← i + 1
end while

关于java - Java中对数组进行排序的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929683/

相关文章:

javascript - 预期数组但在 Jest 中收到数组

c++ - 3 元素 multimap,按第一个排序但计算第二个数字

java - 为什么 JSplitPane 会混合我的 GridBagLayout?

java - 如何使用 Apache Daffodil 的 DataProcessor.unparse() 方法来重建原始解析消息?

java - 异常流控在某些场景下是不是更好?

java - 数组列表字符串中的反转

arrays - 如何 swift 将调用委托(delegate)给 [0..<n]?

C#:不使用数组将字符串(或用户输入)拆分为单个字符?

string - 你怎么能在低级别对字符串单词进行排序?

c - 冒泡排序使数组为空