`

鸡尾酒排序算法

阅读更多

鸡尾酒排序,也就是定向冒泡排序鸡尾酒搅拌排序搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

#include<stdio.h>    
#include<string.h>   
#include<math.h>   
#include<ctype.h>   
#include<stdbool.h>  

void swap(int *a, int *b)   //交换两元素的值
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}

void printArray(int a[], int count)   //打印数组元素
{
    int i;
    for(i=0; i<count; i++)
        printf("%d ",a[i]);
    printf("\n");
}

void cocktail_sort(int a[], int size){    //数组中的第一个数为0索引
    int i,bottom = 0;
    int top = size - 1;
    bool swapped = true; 
    while(swapped)    //假如没有元素交换,则数组有序
    {
        swapped = false; 
        for(i = bottom; i < top; i++)
        {
            if(a[i] > a[i + 1])      //判断两个元素是否正确的顺序
            {
                swap(&a[i], &a[i + 1]);     //让两个元素交换顺序
                swapped = true;
            }
        }
        // 将未排序部分的最大元素交换到顶端
        top = top - 1; 
        for(i = top; i > bottom; i--)
        {
            if(a[i] < a[i - 1]) 
            {
                swap(&a[i], &a[i - 1]);
                swapped = true;
            }
        }
        //将未排序部分的最小元素交换到底端
        bottom = bottom + 1;  
    }
}

int main(void)   
{
    int a[]={3, 5, 4, 6, 9, 7, 8, 0, 1};
    int n=sizeof(a)/sizeof(*a);
    printArray(a,n);
    cocktail_sort(a,n);
    printArray(a,n);
    return 0;
}

 

分享到:
评论

相关推荐

    c++鸡尾酒排序算法yu

    c++鸡尾酒排序算法

    java交换排序之鸡尾酒排序实现方法

    主要介绍了java交换排序之鸡尾酒排序实现方法,实例分析了排序的原理与相关的实现技巧,需要的朋友可以参考下

    冒泡排序改进算法 /鸡尾酒算法

    改进的冒泡排序,对排序的数组进行双向冒泡排序,又称为鸡尾酒排序

    算法-理论基础- 排序- 鸡尾酒排序(包含源程序).rar

    算法-理论基础- 排序- 鸡尾酒排序(包含源程序).rar

    java数据结构算法 冒泡 选择 鸡尾酒 插入 快速 排序算法

    自己动手写的数据结构算法,希望能帮到大家。几乎每一句都有注释

    排序算法总结

    排序算法再就业面试中经常被问到,这里提供一些排序算法的总结。

    常用排序算法总结

    常用排序算法总结,包含:冒泡排序、鸡尾酒排序、选择排序、插入排序、二分插入排序、希尔排序、归并排序、堆排序、快速排序等排序算法总结。

    经典算法的C#源码实现

    经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - 地精排序Gnome Sort 经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳...

    c#实现基本排序算法

    用c#语言重写的基本排序算法,里面包含冒泡排序,鸡尾酒排序(双向冒泡),选择排序,插入排序,希尔排序,堆排序,归并排序这几个排序算法。程序可以直接运行。

    易语言排序算法演示

    易语言排序算法演示源码,排序算法演示,初始化乱序,保存结果,默认排序,冒泡排序,插入排序,鸡尾酒排序,选择排序,双向选择排序,基数排序,鸽巢排序,快速排序,快速排序子程序

    CockSort_hidden1yi_C#_

    C# 鸡尾酒排序算法使两个数互换位置源码。

    简单排序方法:本次提交包括四种排序算法和一个测试演示。-matlab开发

    算法包括冒泡排序算法、鸡尾酒排序算法、插入排序算法和奇偶排序算法。 这些算法接收一个向量并对向量的元素进行排序并将其返回到一个输出向量中。 例如使用冒泡排序算法,您可以执行以下操作: &gt;&gt; A = rand(1,100)...

    排序算法基础、改进综合

    //定向冒泡[鸡尾酒]排序 //选择排序 //改进的选择排序 //直接插入排序 //二分插入排序 //希尔排序 //自顶向下地归并排序 //自底向上地归并排序 //堆排序 //快速排序 //改进的快速排序:三向切分快速排序

    为什么说Python可以实现所有的算法

    今天推荐一个Python学习的干货。 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万。 这个项目主要包括两部分内容:一是各种算法的基本原理...鸡尾酒排序算法 鸡尾酒(Cocktai

    jQuery实现冒泡、插入排序算法动画演示

    今天我们来分享一款绝对让你震撼的jQuery插件,它可以模拟各种排序算法的动画,让你很直观的了解各种排序算法实现的原理,如果你纯粹想看排序算法动画,那么...这里提供了插入排序、冒泡排序、鸡尾酒排序这三种动画。

    14种经典排序算法C程序(强烈推荐)

    鸡尾酒排序(双向冒泡排序)CockTailSort(int *array, int length) 或 BiDirectionalSort(int *array, int length) 3.快速排序 QuickSort(int *array, int length) 归并排序(MergeSort.h) 1.归并排序 MergeSort...

    排序方法:十几种常用排序算法的MATLAB实现-matlab开发

    1) 冒泡排序2)桶排序3) 鸡尾酒排序4) 梳状排序5) 计数排序6) 堆排序7) 插入排序8) 归并排序9) 快速排序10) 基数排序11) 选择排序12) 壳排序 代码的编写方式使得它可以很容易地翻译成其他语言(例如,每个实现在 C++...

    android基础算法实现

    查找算法:实现了顺序查找,...排序算法:实现了冒泡排序、鸡尾酒排序、插入排序、桶排序、计数排序、归并排序、鸽巢排序、基数排序、地精排序、图书馆排序、选择排序、希尔排序、堆排序、快速排序、内省排序、耐心排序

    从重力模拟到元胞自动机的不同算法和模拟,在 python 中实现_python代码_下载

    鸡尾酒 合并 双调 快的 堆 桶 元胞自动机 康威的人生游戏 捕食者和猎物 电线世界 兰顿的蚂蚁 布莱恩的大脑 机器学习和人工智能 神经网络手写分类器 量子算法 量子全加器 量子半加器 一般算法 低效的素数搜索 ASCII ...

    TheAlgorithms-Python:算法Python

    算法-Python 用Python实现的所有算法(用于教育) 这些实现是出于演示目的。 它们的效率不如Python标准库中的实现。 排序算法 气泡排序 冒泡排序(有时也称为... 鸡尾酒摇床排序(也称为双向气泡排序,鸡尾酒排序,摇

Global site tag (gtag.js) - Google Analytics