这是什么类型的? - Java

时间:2014-02-19 02:21:42

标签: java sorting

有谁知道这在java中是什么类型的?我不太确定自己。插入?选择?提前谢谢!

    public class sorting {
      public static void main(String[] args)
      {
      String[] arr = {"Banana", "Apple", "Orange", "Fruit", "Watermelon", "Hello World"};
        String tmp;
        for (int i = 0;i < arr.length;i++)
        {
          tmp = arr[i];
          for (int j = 0;j < arr.length;j++)
          {
            if (i == j) continue;
            int x = tmp.compareTo(arr[j]);
            if (x < 0)
            {
              tmp = arr[j];
              arr[j] = arr[i];
              arr[i] = tmp;
            }
          }
        }
        for (int i = 0;i < arr.length;i++)
          System.out.println(arr[i]);
      }
    }

3 个答案:

答案 0 :(得分:1)

这看起来像Bubble sort实施:

  • 这是O(n^2)
  • 在每一步中,最大元素“冒泡”到正确的位置
  • 正在进行交换以“冒泡”元素

虽然开始时冒泡排序 丑陋,但我们可以通过正确设置索引来减少工作量,并在此过程中消除i == j比较:

for (int i = arr.length; i > 0; i--) {
    for (int j = 0; j < i - 1; j++) {
        int x = arr[j].compareTo(arr[j + 1]);
        if (x > 0) {
            tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }

    }
}

答案 1 :(得分:1)

冒泡排序。一个词典编纂的泡沫排序,具体而言。

答案 2 :(得分:0)

for (int i = 0;i < arr.length;i++)
{//outer loop
    tmp = arr[i];
    for (int j = 0;j < arr.length;j++)
    {//inner loop
        if (i == j) continue;
        int x = tmp.compareTo(arr[j]);
        if (x < 0)
        {
            tmp = arr[j];
            arr[j] = arr[i];
            arr[i] = tmp;
        }
    }
}

正如您可以在内循环中看到的那样,它与附近的节点进行比较并仅移动一步 每次它将从外环索引开始,并再次检索其余数据 似乎它是一个冒泡的类型,但它是一个奇怪的工具。