改进冒泡排序——鸡尾酒排序(C++模版技术实现)
时间:2011-05-27 来源:单鱼游弋
下面代码仅供本人复习数据结构所用,实用性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[] = "Bubble 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; }
相关阅读 更多 +