鸡尾酒排序Cocktail Sort (双向冒泡排序)

Posted izzwhf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸡尾酒排序Cocktail Sort (双向冒泡排序)相关的知识,希望对你有一定的参考价值。

鸡尾酒排序

鸡尾酒排序思路,先从左边开始进行冒泡排序,第一趟冒泡排序完,最大值在的数组的最右端,然后进行第二趟排序,第二趟排序从右边开始排序,第二趟结束时,最小值在数组最左端,以此类推,每一趟排序完都能将一个在当前数组(不包括之前排序得到的最大或者最小的数)中最小或者最大的数放在对应的位置。

算法过程

技术图片

代码实现

#include <iostream>

using namespace std;

void Swap(int array[], int i, int j)

    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;


void cocktailSort(int array[], int length)

    if (array == nullptr || length <= 0)
        return;
    int left = 0;
    int right = length - 1;
    while (left < right)
    
        //第一次 左边开始 
        for (int i = left; i < right; i++)
        
            if (array[i] > array[i + 1])
            
                Swap(array, i, i + 1);      //左边大于右边,交换
            
        
        //第二次 右边开始
        right--;
        for (int i = right; i > left; i--)
        
            if (array[i - 1] > array[i])
                Swap(array, i - 1, i);      //左边大于右边, 交换
        
        left++;
    

int main()

    int arr[] =  5,9,8,7,6 ;
    int length = sizeof(arr) / sizeof(int);
    cocktailSort(arr, length);
    for (int i = 0; i < length; i++)
        cout << arr[i] << " ";
    cout << endl;

以上是关于鸡尾酒排序Cocktail Sort (双向冒泡排序)的主要内容,如果未能解决你的问题,请参考以下文章

python代码实现鸡尾酒排序(双向冒泡排序)

鸡尾酒排序/双向冒泡排序

算法数据结构 sf sjjg

冒泡排序和鸡尾酒排序(code)

鸡尾酒排序(双冒泡排序搅拌排序或涟漪排序)

鸡尾酒排序