排序中的逻辑错误?

时间:2015-01-31 19:36:15

标签: java bubble-sort selection-sort

我一直在研究由字符串组成的数组的排序,这是我的代码

public static void bubbleSort(String[] values)
{
    boolean swapped = true;
    while (swapped)
        {
            swapped = false;
            for (int count = 0; count<values.length-1;count++)
            {
                if(values[count].compareTo(values[count+1])>0)
                    swap(values,count,count+1);
                swapped = true;
            }
        }
}


public static void selectionSort(String[] values)
{
    int first =0, last = values.length-1,biggest = 0;
    while (last > first)
    {
        biggest = maxIndex(values);
        swap (values, biggest,last);
        last --;
    }
}

private static void swap(String[] values, int first, int second)
{
    String temp = values[first];
    values[first] = values[second];
    values[second] = temp;
}

public static int maxIndex(String[] values)
{
    int index=0;
    for(int count=0; count<values.length; count++)
    {
        if(values[count].compareTo(values[index])>0)
        {
            index=count;
        }
    }
    return index;
}

当我尝试通过测试仪运行bubbleSort时,没有打印任何内容,而selectionSort只返回未排序的字符串。

Eclipse中没有语法错误,那么我应该假设算法或代码必须存在逻辑错误吗?

1 个答案:

答案 0 :(得分:0)

对于冒泡排序

 for (int count = 0; count<values.length-1;count++)
 {
   for(int j=0;j<values.length-1;j++)
   {
        if(values[j].compareTo(values[j+1])>0)
                   swap(values,count,count+1);
    }
  }

下面是一轮How Bubble Sort的工作示例?

Bubble Sort

这只是我们必须进行n * n轮的一轮,

冒泡的复杂性排序:О(n2)