C++:利用模板类进行若干排序算法
来源:互联网 发布:淘宝网 情趣内衣 模特 编辑:程序博客网 时间:2024/06/06 07:10
template <class T>class CSort{public: CSort(int nArraySize); virtual ~CSort(); void Bubble(T arr[]); //冒泡排序 void insertion(T arr[]); //插入排序 void Quick(T arr[], int leftlimit, int rightLimit); //快速排序 void Selection(T arr[]); //选择排序private: int _arrSize;};template <class T>CSort<T>::CSort(int nArraySize){ if (nArraySize < 0) _arrSize = 0; else _arrSize = nArraySize;}template <class T>CSort<T>::~CSort(){}template <class T>void CSort<T>::Bubble(T arr[]){ T tmp; int last = _arrSize - 1; bool isSorted = true; do { isSorted = true; for (int i = 0; i < last; i++) { if (arr[i] > arr[i + 1]) { tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; isSorted = false; } } last--; } while (!isSorted);}template <class T>void CSort<T>::insertion(T arr[]){ T val; for (int i = 1; i < _arrSize; i++) { val = arr[i]; int n; for (n = i - 1; n >= 0 && val < arr[n]; n--) { arr[n + 1] = arr[n]; } arr[n + 1] = val; }}template <class T>void CSort<T>::Quick(T arr[], int lLimit, int rLimit){ int left = lLimit; int right = rLimit; int pivot = (left + right) / 2; T tmp; T mid = arr[pivot]; do { while ((arr[left] < mid) && (left < rLimit)) { left++; } while ((mid < arr[right]) && (right > lLimit)) { right--; } if (left <= right) { tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } } while (left <= right); if (lLimit < right) { CSort<T>::Quick(arr, lLimit, right); } if (left < rLimit) { CSort<T>::Quick(arr, left, rLimit); }}template <class T>void CSort<T>::Selection(T arr[]){ T tmp; int min; for (int i = 0; i < _arrSize - 1; i++) { min = i; for (int n = i + 1; n < _arrSize; n++) { if (arr[n] < arr[min]) { min = n; } } tmp = arr[min]; //交换位置 arr[min] = arr[i]; arr[i] = tmp; }}int main(){ CSort<int> _sort(11); int arr[] = { 24, 19, 13, 90, -35, 23, 46, -5, 128, 69, 0 }; _sort.Selection(arr); for (int i = 0; i < sizeof arr / sizeof arr[0]; i++) { cout << arr[i] << "\t"; } cout << endl; return 0;}
0 0
- C++:利用模板类进行若干排序算法
- 排序算法类模板
- C语言:利用排序二叉树进行排序
- 排序——若干排序算法
- 排序算法类的模板
- 排序算法类的模板
- 排序算法之归并排序(模板类)
- 排序算法之插入排序(模板类)
- 利用内存寻址进行快速排序的算法
- java中利用二叉树算法进行排序
- Mapreduce算法三、利用cleanup对reduce结果进行排序
- C++:多线程编程学习:利用多线程进行归并排序。
- C++,利用指针对数组元素进行大小排序
- 【c语言】利用库函数进行快速排序(升)
- 关于若干种排序算法的测试
- 若干排序算法简单汇总(一)
- 若干排序算法简单汇总(二)
- 若干排序算法简单汇总(二)
- Openvswitch原理与代码分析(2):用户态流表flow table的操作
- 简单Tab的制作
- Spring (一)
- hive常用函数总结
- Bash Shell 学习记录(二)
- C++:利用模板类进行若干排序算法
- 解决oracle关键字in其中内容1000的限制
- 系统级性能分析工具--Systemtap
- cocos2d-x屏幕适配原理
- Java中的List和Map有什么区别?List, Set, Map是否继承自Collection接口?
- A complete guide to using Keras as part of a TensorFlow workflow: tutorial
- 浅谈Base64编码
- 二维码生成方法
- 面试题总结2