修改冒泡排序代码

时间:2013-05-07 00:13:12

标签: java sorting bubble-sort

我正在努力学习一项测试和一项研究问题,我无法与BubbleSort达成交易。问题是:

修改下面的BubbleSort代码以使其执行短路。我的意思是,修改它,以便如果完成传递而不进行任何交换,执行将停止。

public static<T extends Comparable<T>> void bubbleSort(T[] data)
{
  int position, scan;
  T temp;

  for (position = data.length - 1; position >= 0; position--)
  {
    for (scan = 0; scan <= position - 1; scan++)
    {
      if (data[scan].compareTo(data[scan+1]) > 0)
      {
        /**Swap the values*/
        temp = data[scan];
        data[scan] = data[scan+1];
        data[scan + 1] = temp;
      }
    }
  }
}    

1 个答案:

答案 0 :(得分:2)

你需要一个布尔标志或一个状态。

快速谷歌搜索可以为您省去麻烦:http://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort

repeat
    hasChanged := false
    decrement itemCount
    repeat with index from 1 to itemCount
        if (item at index) > (item at (index + 1))
            swap (item at index) with (item at (index + 1))
            hasChanged := true
until hasChanged = false