1 鸡尾酒排序
当冒泡排序的基础上,鸡尾酒排序进一步对其进行了优化,由于冒泡排序会对一些已经排好序的数列进行比较,浪费了很多比较次数,所以鸡尾酒排序:当第一轮从左到右排序确定了一个最大(最小)值之后,然后就从右向左进行比较往回走,在从右向左比较完之后,数列中的最小(最大)值被浮到最前面的位置。
2 代码实现
import java
.util
.Arrays
;
public class CockTailSort {
public void cockTailSort(int[] arrayLike
) {
int n
= arrayLike
.length
;
for (int i
= 0; i
< (int) (n
/ 2); i
++) {
boolean isSorted
= true;
for (int j
= i
; j
< n
- i
- 1; j
++) {
if (arrayLike
[j
] > arrayLike
[j
+ 1]) {
int t
= arrayLike
[j
];
arrayLike
[j
] = arrayLike
[j
+ 1];
arrayLike
[j
+ 1] = t
;
isSorted
= false;
}
}
if (isSorted
)
break;
isSorted
= true;
for (int j
= n
- i
- 1; j
> i
; j
--) {
if (arrayLike
[j
] < arrayLike
[j
- 1]) {
int t
= arrayLike
[j
];
arrayLike
[j
] = arrayLike
[j
- 1];
arrayLike
[j
- 1] = t
;
isSorted
= false;
}
}
if (isSorted
)
break;
}
}
public static void main(String
[] args
) {
int[] a
= {7, 6, 5, 4, 3, 2, 1};
CockTailSort cockTailSort
= new CockTailSort();
cockTailSort
.cockTailSort(a
);
System
.out
.println(Arrays
.toString(a
));
}
}