活用各种数据结构
来源:互联网 发布:linux脚本等待 编辑:程序博客网 时间:2024/05/17 17:55
排序算法
一, 代价为(n^2)的排序算法:
1,插入排序:
template<typename E>void swap(E A[], int first, int second) { E temp = A[first]; A[first] = A[second]; A[second] = temp;}template<typename E>bool prior(E a, E b) { if (a < b) return true; else return false;}template <typename E>void inssort(E A[], int n) { for (int i = 0; i < n; i++) for (int j = i; (j>0) && prior(A[j], A[j - 1]); j--) swap(A, j, j - 1);}
2,冒泡排序:
template <typename E>void bubsort(E A[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = n - 1; j > i; j--) { if (prior(A[j], A[j - 1])) swap(A, j, j - 1); } }}
3,选择排序:
template<typename E>void selsort(E A[], int n) { for (int i = 0; i < n - 1; i++) { int lowindex = i; for (int j = n - 1; j > i; j--) if (prior(A[j], A[lowindex])) lowindex = j; swap(A, i, lowindex); }}
4,Shell排序:
template<typename E>void inssort2(E A[], int n, int incr) { for (int i = incr; i < n; i += incr) for (int j = i; (j >= incr) && (prior(A[j], A[j - incr])); j -= incr) swap(A, j, j - incr);}template<typename E>void shellsort(E A[], int n) { for (int i = n / 2; i > 2; i /= 2) for (int j = 0; j < i; j++) inssort2<E>(&A[j], n - j, i); inssort2<E>(A, n, 1);}
5,归并排序:
template<typename E>void mergesort(E A[], E temp[], int left, int right) { if (left == right) return; int mid = (left + right) / 2; mergesort<E>(A, temp, left, mid); mergessort<E>(A, temp, mid + 1, right); for (int i = i = left; i <= right; i++) temp[i] = A[i]; int i1 = left; int i2 = mid + 1; for (int curr = left; curr <= right; curr++) { if (i1 == mid + 1) A[curr] = temp[i2++]; else if (i2 > right) A[curr] = temp[i1++]; else if (prior(temp[i1], temp[i2])) A[curr] = temp[i1++]; else A[curr] = temp[i2++]; }}
6,快速排序:
这里写代码片
0 0
- 活用各种数据结构
- 活用各种数据结构——线段树篇
- 活用 巧用数据结构
- 活用各种数据结构——RMQ/树状数组/分桶法和平方分割
- 各种数据结构
- 数据结构:各种排序
- socket 各种头数据结构
- 各种数据结构的特性
- 数据结构中的各种排序
- 各种数据结构的速度
- 数据结构之各种排序
- ffmpeg 的各种数据结构
- 各种数据结构优缺点分析
- 各种数据结构的用途
- 数据结构中的各种树
- 数据结构---各种树模板
- 各种数据结构的特性
- 各种数据结构的优缺点
- C++之模板函数
- start.S(u-boot.2012.10)
- HTML(HyperText Markup Language)超文本标记语言基础
- 基于谷歌Cartographer SLAM集成机器视觉
- 结点选择
- 活用各种数据结构
- 字符串
- 自定义view2
- android 系统开发资料汇总
- android:descendantFocusability=”blocksDescendants”的用法
- 项目展示
- LibEvent中文帮助文档
- 资源
- 从零开始学centos(一)