📜  鸡尾酒排序Java程序(1)

📅  最后修改于: 2023-12-03 14:58:52.627000             🧑  作者: Mango

鸡尾酒排序(Cocktail Sort)Java程序

鸡尾酒排序,也称为双向冒泡排序,是一种改进的冒泡排序算法。它通过往返移动(从左到右然后从右到左)来将最大的元素浮动到数组的末尾,同时将最小的元素浮动到数组的开头。这种排序算法对于大部分已经有序的数组可以有更好的性能。

以下是一个基于Java语言实现的鸡尾酒排序算法示例:

public class CocktailSort {
    public static void cocktailSort(int[] arr) {
        boolean swapped;
        int start = 0;
        int end = arr.length - 1;
        
        do {
            swapped = false;
            
            // 从左到右逐个比较相邻元素,大的元素向右移动
            for (int i = start; i < end; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                    swapped = true;
                }
            }
            
            // 如果没有元素交换,表示已经有序
            if (!swapped) {
                break;
            }
            
            swapped = false;
            
            // 从右到左逐个比较相邻元素,小的元素向左移动
            for (int i = end - 1; i >= start; i--) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                    swapped = true;
                }
            }
            
            start++;
            end--;
        } while (swapped);
    }
    
    public static void main(String[] args) {
        int[] arr = {5, 8, 2, 12, 3};
        cocktailSort(arr);
        
        System.out.println("排序结果:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

以上代码实现了鸡尾酒排序的核心算法。在cocktailSort方法中,我们使用两个指针startend来追踪已排序部分的起始和结束位置。通过循环多次从左到右和从右到左比较相邻元素并交换位置,直到没有元素需要交换为止。

main方法中,我们创建了一个整型数组arr并调用cocktailSort方法对其进行排序。最后输出排序结果。

希望上述介绍对你有帮助!