【算法题】归并排序
来源:互联网 发布:海康威视无网络视频 编辑:程序博客网 时间:2024/05/22 02:24
参考的剑指offer题36:
http://blog.csdn.net/xiaxzhou/article/details/74347863
#include <algorithm>#include <numeric>#include <vector>using namespace std;void merge(vector<int>& array,vector<int>& array_copy, int left, int k, int right){ if (array.empty()||array_copy.empty()||left>=right) { return; } int index(left); int left_index(left), right_index(k + 1); while (left_index <= k&&right_index <= right) { if (array_copy[left_index]<array_copy[right_index]) { array[index++] = array_copy[left_index++]; } else { array[index++] = array_copy[right_index++]; } } while (left_index <= k) { array[index++] = array_copy[left_index++]; } while (right_index<= right) { array[index++] = array_copy[right_index++]; }}void merge_sort_core(vector<int>& array, vector<int>& array_copy, int left, int right){ if (array.empty()||array_copy.empty()||left>=right) { return; } int k = left + ((right - left) >> 1); merge_sort_core(array_copy, array, left, k); merge_sort_core(array_copy, array, k+1, right); merge(array, array_copy, left, k, right);}void merge_sort(vector<int>& array, int len){ if (array.empty()||len<2) { return; } int left(0), right(len - 1); vector<int> array_copy (array); merge_sort_core(array, array_copy, left, right);}void main(){ vector<int> array{3, 1, 2, 5, 8, 7, 6, 4}; merge_sort(array, 8); return;}
阅读全文
0 0
- 【算法题】归并排序
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法:归并排序
- 排序算法-归并排序
- 排序算法:归并排序
- 【排序算法】归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 排序算法--归并排序
- 排序算法:归并排序
- Java 操作字符串
- Drawable Animation
- php
- C#语法:多线程编程(Thread)
- 轻量级任务队列
- 【算法题】归并排序
- 高并发实战之幂等处理
- 常用C函数链接
- JavaScript之选择框脚本(表单脚本)
- ArcGIS Pro登录及离线授权
- hibernate-检索方式
- [048]linux常用命令总结
- Java之:强引用、弱引用、软引用、虚引用
- 机器学习之KNN