快速排序
来源:互联网 发布:linux 安装jdk gz文件 编辑:程序博客网 时间:2024/05/29 19:20
Code:
//空间复杂度中各种各样的数组是归并排序的一大混乱点//#include<bits/stdc++.h>#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn = 1000000;int num[maxn];int T[maxn];int temp[maxn];void Merge(int s, int m, int t){ int i = s, j = m+1, k; for(k = s ; i <= m && j <= t;) { if(temp[i] > temp[j]) T[k] = temp[j], j++, ++k; else T[k] = temp[i], i++, ++k; } while(i <= m) T[k] = temp[i], i++, k++; while(j <= t) T[k] = temp[j], j++, k++; for(int ii = s; ii <= t; ii++) temp[ii] = T[ii]; return ;}void M_Sort(int s, int t){ if(s == t) { temp[s] = num[s]; //只有一个元素 T[s] = num[s]; } else { int m = (s+t)/2; //确定中间元素的位置 M_Sort(s, m); //将num数组的[s, m]归并为有序的TR2 M_Sort(m+1, t); //将num数组的[m+1, t]归并为有序的TR2 Merge(s, m, t); //讲TR2中的[s, m] 和 [m+1]合并为TR1 }}int main(){ int n; scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &num[i]); M_Sort(1, n); for(int i = 1; i <= n; i++) if(i == 1) cout << T[i]; else cout << " " << T[i]; return 0;}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 【转载】使用图灵机器人接口开发微信公众号聊天功能、设置自定义菜单及申请测试账号
- 每天一个linux命令(29):chgrp命令
- C++:蓝桥杯练习题~十六进制转八进制
- 僵尸进程与孤儿进程
- Linux下ffmpeg的安装
- 快速排序
- CentOS6.5最小化安装后安装man命令
- 用JavaScript实现简单的乘法计算
- Paint 详解
- 模拟移动端上拉加载功能
- 归并排序
- 一名转专业到计算机的分析
- [LeetCode] Dungeon Game
- Worker Thread设计模式