庞果英雄会 数组排序
来源:互联网 发布:js设置style display 编辑:程序博客网 时间:2024/04/30 14:52
第一次做这个网站的题目 感觉题目还不错 虽然很多题不会
由于是第一次做我还以为只能用给出的头文件 于是自己写了个堆排上去。。。
我感觉看题目的时候就是一个贪心的过程 每次交换的时候都把最大的排好 然后再排下一个 这样就能保证交换次数最少了 至于证明嘛 呵呵 实在是不会啊
下面看代码
#include <cstdio>#include <string>#include <cstring>#define Max 105using namespace std;int s[Max],t[Max],A[Max];void merge_sort(int *A, int x, int y, int *T){ if(y - x > 1) { int m = x + (y - x) / 2;//划分 int p = x, q = m, i = x; merge_sort(A, x, m, T);//递归求解 merge_sort(A, m, y, T);//递归求解 while( p < m || q < y) { if(q >= y || (p < m && A[p] <= A[q]))T[i++] = A[p++];//从左半边取数复制到辅助数组中 else T[i++] = A[q++];//从右半边取数复制到辅助数组中 } for(int i = x; i < y; i++)A[i] = T[i];//从辅助空间取回排好序的数 }}int run(const int *a,int n) //算法的实质是一个贪心的过程{ int i; for(i = 0; i < n; i++) A[i] = s[i] = a[i]; merge_sort(s,0,n,t); int cnt = 0; while(n > 0) { int v; for(i = 0; i < n; i++) if(A[i] == s[n-1]) {v = i;break;} if(i == n-1){n--;continue;} int temp = A[i]; A[i] = A[n-1]; A[n-1] = temp; cnt++; n--; } return cnt;}//start 提示:自动阅卷起始唯一标识,请勿删除或增加。int main(){ int a[3] = {1,3,2}; int re = run(a,3); printf("%d\n",re);}//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
- 庞果英雄会 数组排序
- 英雄会-数组排序
- 庞果英雄会——数组排序
- 庞果英雄会——数组排序
- 数组排序【解】--英雄会
- 庞果英雄汇——数组排序
- 【庞果英雄会】最小操作数
- 庞果英雄会 幸运数
- 庞果英雄会-整数问题
- 报数游戏(庞果英雄会)
- 庞果英雄会——最小操作数
- 庞果英雄会——回文字符串
- 庞果英雄会——建立信号基站
- 庞果英雄会——字符串消除
- 庞果英雄会——子序列的个数
- 挑战庞果英雄会之子序列的个数
- 庞果英雄会——覆盖数字
- CSDN英雄会上会英雄
- 在ubuntu 12.04 服务器版 安装openstack
- 美丽的英文诗句【2】
- STL中bind2nd的用法
- 微信公众平台PHP开发,学习资料
- 编程常用网站在线工具收集(一)
- 庞果英雄会 数组排序
- jQuery Validation详解
- 1062. Talent and Virtue (25)
- 字符转为unicode编码
- AC自动机数组写法
- SOA,不看你永远不知道的事
- php虚拟机配置
- gentoo 网卡命名
- Lua程序设计第二版(笔记)第九章协同程序