【问题标题】:Valid selection sort algorithm?有效的选择排序算法?
【发布时间】:2021-12-29 17:09:43
【问题描述】:

我做了以下使用选择排序对数组进行排序的方法:

public T[] selection(T[] arr)
{
   T temp, min;
   for(int i = 0; i < arr.length-1; i++)
   {
      for(int j = i + 1; j < arr.length; j++)
      {
         min = arr[i];
         if(min.compareTo(arr[j]) > 0)
         {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
         }
      }
   return arr;
}

我无法将我的算法与冒泡排序算法区分开来。我的排序方法是否通过了选择排序方法?

【问题讨论】:

  • 这看起来确实像冒泡排序。如果您想要选择排序,j 循环应该找到最小值的位置,并且在 j 循环结束后,您进行一次交换以将该元素置于底部。
  • 如果你是升序排序,你可以简单地使用Arrays.sort(arr),导入java.util.Arrays
  • @snd 谢谢,但我已经知道了。我的主要目标是自己制作所有排序算法的方法。

标签: java selection-sort


【解决方案1】:
public final class SelectionSort {

    public static void sortAsc(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++)
            swap(arr, i, getMinIndex(arr, i));
    }

    private static int getMinIndex(int[] arr, int i) {
        int minIndex = i;

        for (; i < arr.length; i++)
            if (arr[i] < arr[minIndex])
                minIndex = i;

        return minIndex;
    }

    private static void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

}

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2019-04-24
    • 1970-01-01
    • 2019-03-31
    相关资源
    最近更新 更多