归并排序C++
来源:互联网 发布:mac专柜口红价格多少啊 编辑:程序博客网 时间:2024/06/03 18:09
#include <iostream>using namespace std;/* *把数组从中间分为2部分,分别将两部分排好序后,调用merge将2个有序序列合并成1个有序序列 * */void merge(int* arr, int start, int mid, int end){int* p = new int[1000];int* q = new int[1000];for(int i = start; i <= mid; i++){p[i] = arr[i];}for(int j = mid + 1; j <= end; j++){q[j] = arr[j];}int i = start, j = mid + 1;int pos = start;while(i <= mid || j <= end){if(i > mid){ //处理一方到达尽头arr[pos++] = q[j++];continue;}if(j > end){arr[pos++] = p[i++];continue;}if(p[i] <= q[j]){arr[pos++] = p[i++];}else if(p[i] > q[j]){arr[pos++] = q[j++];}}delete[] p;delete[] q;}void merge_sort(int* arr, int start, int end){if(start >= end) return; //递归出口int mid = start + (end - start) / 2;merge_sort(arr, start, mid);merge_sort(arr, mid + 1, end);merge(arr, start, mid, end);}int main(){int arr[] = { 3, 5, 6 ,8, 2, 1, 9, 4, 0, 7};merge_sort(arr, 0, 9);for(int i = 0; i < 10; i++){cout << arr[i] << " ";}system("PAUSE");}
0 0
- 归并排序(C/C++)
- 归并排序(C)
- 归并排序 --- C语言版
- C++_归并排序
- 归并排序C语言
- 【C++】归并排序
- 归并排序C语言版
- 归并排序(C语言版)
- 归并排序(c++)
- 归并排序C语言
- C语言 归并排序
- 归并排序 C语言数据结构
- 归并排序 c语言实现
- 归并排序(C语言)
- 读书笔记—C 归并排序
- 归并排序C语言实现
- 归并排序C语言实现
- 归并排序C语言代码
- 第一篇博客
- 你不努力,谁也给不了你想要的生活
- HDU 2473 删除并查集(装逼遭天谴)
- 网络寻路
- 简述FPS的计算方法
- 归并排序C++
- 文件复制
- 在ios中举个简单的protocol例子,关于两个类用协议方式传值。
- 时间函数-between
- Android架构实战(一)—— 核心思想
- 黑马程序员——JAVASE-网络编程
- [剑指Offer]6.替换空格
- MATLAB中的一些小技巧(基础)
- 工作总结