• 鸡尾酒排序Cocktail Sort(排序算法九)


    1.算法原理 


    2.代码实现

    #include <stdio.h>
    
    //printArray打印出数组
    void printArray(int a[],int size){  
        printf("数组为:[%d] ",a[0]);  
        for (int i=1;i<size;i++)  
        {  
            printf(" %x ",a[i]);  
        }  
        printf("
    ");  
    }
    
    
    void main()
    {
       //a[0]监视哨
       int  a[10] ={0,9,8,7,6,5,4,3,2,1};
       int  len=10;
       int low=1, up=len-1, index=1;
        while (up > low)
        {
            for (int i = low; i < up; i++)
            {
                if (a[i] > a[i + 1])
                {
    				printf(" %d<-->%d ",a[i],a[i+1]);
    				printArray(a,10);
    				a[0]=a[i];
    				a[i]=a[i+1];
    				a[i+1]=a[0];
                    index = i;
                }
            }
            up = index;
            for (int j = up; j > low; j--)
            {
                if (a[j] < a[j - 1])
                {
    				printf(" %d<-->%d ",a[j],a[j-1]);
    				printArray(a,10);
                    a[0]=a[j];
    				a[j]=a[j-1];
    				a[j-1]=a[0];
                    index = j;
                }
            }
            low = index;
        }
    	printArray(a,10);
    
    }
    
    
    


    3.结果

     9<-->8 数组为:[0]  9  8  7  6  5  4  3  2  1
     9<-->7 数组为:[9]  8  9  7  6  5  4  3  2  1
     9<-->6 数组为:[9]  8  7  9  6  5  4  3  2  1
     9<-->5 数组为:[9]  8  7  6  9  5  4  3  2  1
     9<-->4 数组为:[9]  8  7  6  5  9  4  3  2  1
     9<-->3 数组为:[9]  8  7  6  5  4  9  3  2  1
     9<-->2 数组为:[9]  8  7  6  5  4  3  9  2  1
     9<-->1 数组为:[9]  8  7  6  5  4  3  2  9  1
     1<-->2 数组为:[9]  8  7  6  5  4  3  2  1  9
     1<-->3 数组为:[1]  8  7  6  5  4  3  1  2  9
     1<-->4 数组为:[1]  8  7  6  5  4  1  3  2  9
     1<-->5 数组为:[1]  8  7  6  5  1  4  3  2  9
     1<-->6 数组为:[1]  8  7  6  1  5  4  3  2  9
     1<-->7 数组为:[1]  8  7  1  6  5  4  3  2  9
     1<-->8 数组为:[1]  8  1  7  6  5  4  3  2  9
     8<-->7 数组为:[1]  1  8  7  6  5  4  3  2  9
     8<-->6 数组为:[8]  1  7  8  6  5  4  3  2  9
     8<-->5 数组为:[8]  1  7  6  8  5  4  3  2  9
     8<-->4 数组为:[8]  1  7  6  5  8  4  3  2  9
     8<-->3 数组为:[8]  1  7  6  5  4  8  3  2  9
     8<-->2 数组为:[8]  1  7  6  5  4  3  8  2  9
     2<-->3 数组为:[8]  1  7  6  5  4  3  2  8  9
     2<-->4 数组为:[2]  1  7  6  5  4  2  3  8  9
     2<-->5 数组为:[2]  1  7  6  5  2  4  3  8  9
     2<-->6 数组为:[2]  1  7  6  2  5  4  3  8  9
     2<-->7 数组为:[2]  1  7  2  6  5  4  3  8  9
     7<-->6 数组为:[2]  1  2  7  6  5  4  3  8  9
     7<-->5 数组为:[7]  1  2  6  7  5  4  3  8  9
     7<-->4 数组为:[7]  1  2  6  5  7  4  3  8  9
     7<-->3 数组为:[7]  1  2  6  5  4  7  3  8  9
     3<-->4 数组为:[7]  1  2  6  5  4  3  7  8  9
     3<-->5 数组为:[3]  1  2  6  5  3  4  7  8  9
     3<-->6 数组为:[3]  1  2  6  3  5  4  7  8  9
     6<-->5 数组为:[3]  1  2  3  6  5  4  7  8  9
     6<-->4 数组为:[6]  1  2  3  5  6  4  7  8  9
     4<-->5 数组为:[6]  1  2  3  5  4  6  7  8  9
    数组为:[4]  1  2  3  4  5  6  7  8  9
    
    


  • 相关阅读:
    回滚事件只是让原数据看起来不变,但是id还是会自增吗?
    什么是Java中的原子操作( atomic operations)
    Java并发编程:volatile关键字解析
    对Java CAS的一些了解(正在整理学习中)
    问号和冒号----条件运算符, 问号冒号表达式
    对Java ConcurrentHashMap的一些了解
    Java HashMap的工作原理
    Java hashCode() 和 equals()
    Java 对比Hashtable、Hashmap、Treemap有什么不同?
    Java TreeMap详细介绍和使用示例
  • 原文地址:https://www.cnblogs.com/whzhaochao/p/5023469.html
Copyright © 2020-2023  润新知