Java提高 - 八大排序方法之其他算法

来源:互联网 发布:淘宝onlyanna 罗晓颖 编辑:程序博客网 时间:2024/06/07 14:49

所谓的八大算法只是通过比较选出的比较简单高效的排序算法,而现实中并不是只有这八种排序算法,还有一些其衍生算法。总体来说并不是这八大算法就是万能的,要看具体情况来实现,根据具体情况选择适合你程序的最优排序算法。

接下来就展示一个八大算法之外的排序算法。鸡尾酒排序,这种算法是冒泡法的衍生算法。首先通过冒泡法吧最大的移动到最后,然后从倒数第二位开始把最小的移动到第一位,然后在移动第二大的到倒数第二位。这样总会把大的往后移动,小的往前移动标记好移动的单元会减少多次比较移动。

原理:将队列分为小序列、乱序和大序列三个部分,通过冒泡法交替的吧小的放入小序列大的放入大序列中,知道乱序中只有一个单元。

要点:分三个序列,交替的通过冒泡法移动乱序中的最大最小位

实现:

/** * 鸡尾酒排序 */public static int[] cocktailSort(int[] src) {// 将最小值排到队尾for (int i = 0; i < src.length / 2; i++) {for (int j = i; j < src.length - i - 1; j++) {if (src[j] > src[j + 1]) {int temp = src[j];src[j] = src[j + 1];src[j + 1] = temp;}System.out.println("交换小" + Arrays.toString(src));}// 将最大值排到队头for (int j = src.length - 1 - (i + 1); j > i; j--) {if (src[j] < src[j - 1]) {int temp = src[j];src[j] = src[j - 1];src[j - 1] = temp;}System.out.println("交换大" + Arrays.toString(src));}System.out.println("第" + i + "次排序结果:" + Arrays.toString(src));}return src;}

0 0
原创粉丝点击