1
我目前正在参加一个数据结构和算法课程,并且练习的一部分是实现具有3个for循环的振动筛分算法。在代码片段中包含了一些我修正的错误,但有一件事我不确定为什么我得到这个: 当我初始化一个大小为12的数组时,我的第一个索引值没有排序,我没有理解为什么。 这是我的代码:振动筛排序或双向气泡排序
// Method which will sort an array by using the shakersort algorithm
public void shakerSort(int[] array)
{
for (int p = 1; p < array.length-1; p++)
{
for (int i = p-1; i < array.length-2; i++)
{
if (array[i] > array[i+1])
{
super.swap(array, i, i+1);
}
}
for (int i = array.length-p-1; i > 0; i--)
{
if (array[i] > array[i+1])
{
super.swap(array, i, i+1);
}
}
}
我的结果是这样的:
- 元素0:53
- 要素1:27
- 要素2:28
- 元素3 :53
- 元素4:90
- 元素5:72
- 元素6:80
- 元素7:67
- 元8:2
- 元素9:33
- 元件10:45
- 元件11:91
- 排序后...
- 元素0:27
- 要素1:2
- 要素2:28
- 要素3:33
- 元素4:45
- 元素5:53
- 元素6:53
- 元素7:67
- 元素8:72
- 元素9:80
- 元件10:90
- 元件11:91
感谢您的时间和帮助
-Daniel
感谢您的回复,我能够使它工作。是的,这是一个摇床/鸡尾酒类。它的实现使用了嵌套for循环而不是do-while和一个布尔变量。 – Daniel 2012-02-10 04:28:08