zoukankan      html  css  js  c++  java
  • 改进冒泡排序——鸡尾酒排序(C++模版技术实现)

    下面代码仅供本人复习数据结构所用,实用性N低,各位飘过吧~~哈哈:>

    //
    // C++模版技术实现鸡尾酒排序(改进的冒泡排序). 
    // 
    
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    
    
    template <typename T>
    void swap(T &x, T &y)
    {
    	T temp = x;
    	x = y;
    	y = temp;
    }
    
    
    template <typename T>
    void cocktailSort(T *array, const size_t count)
    {
    	bool isSwap = true;
    	size_t top = 0, bottom = count - 1, i;
    	T temp;
    	
    	do {
    		isSwap = false;
    		// 
    		// 从上到下比较. 
    		//
    		for (i = top; i < bottom; ++i)
    		{
    			if (array[i] > array[i + 1])
    			{
    				swap(array[i], array[i + 1]);
    				isSwap = true;
    			}
    		}
    		//
    		// 从下到上比较. 
    		//
    		for (i = --bottom; i > top; --i)
    		{
    			if (array[i] < array[i - 1])
    			{
    				swap(array[i], array[i - 1]);
    				isSwap = true;
    			}
    		}
    		++top;
    	} while (true == isSwap);
    } 
    
    
    //
    // 测试 
    //
    int main(void)
    {
    	char szTest[] = "Cocktail sort algorithm test case !"; 
    	int iarrTest[] = {23, 12, 2, 123, 72, 35, 49, 51, 83, 94, 65}; 
    	const size_t INT_ARR_SIZE = sizeof(iarrTest) / sizeof(iarrTest[0]);
    	
    	cocktailSort(szTest, strlen(szTest));
    	cocktailSort(iarrTest, INT_ARR_SIZE);
    	
    	std::cout << szTest << std::endl;
    	
    	for (size_t i = 0; i < INT_ARR_SIZE; ++i)
    	{
    		std::cout << iarrTest[i] << " "; 
    	}
    	std::cout << std::endl;
    	
    	return EXIT_SUCCESS; 
    } 
    
  • 相关阅读:
    [bzoj]2131: 免费的馅饼
    [bzoj]1098: [POI2007]办公楼biu
    [luogu]P2051 [AHOI2009]中国象棋
    [luogu]P2825 [HEOI2016/TJOI2016]游戏
    MSSQL To MongoDB Tool (FREE)
    虚拟机和Linux安装详解
    Maven
    springmvc的文件上传和下载,框架集成
    json详解以及fastjson使用
    JSP——语法,指令,表达式语言(EL),JSTL标签
  • 原文地址:https://www.cnblogs.com/wxxweb/p/2060285.html
Copyright © 2011-2022 走看看