1089.Insert or Merge (25)...to be continued...
来源:互联网 发布:怎么汉化软件 编辑:程序博客网 时间:2024/05/16 19:24
1089.Insert or Merge (25)…to be continued…
pat-al-1089
2017-02-24
- 乙级里面写过,优化了一下,原来还可以这样写
- 参考:《算法笔记:上机训练实战指南》机械工业出版社
/** * pat-al-1089 * 2017-02-23 * Cpp version * Author: fengLian_s */#include<stdio.h>#include<algorithm>#define MAX 110using namespace std;int n, input[MAX], tmpInput[MAX], changed[MAX];bool isSame(int a[], int b[]){ for(int i = 0;i < n;i++) { if(a[i] != b[i]) return false; } return true;}bool insertSort(){ //printf("hello\n"); bool flag = false; for(int i = 1;i < n;i++) { if(i != 1 && isSame(tmpInput, changed)) flag = true; int tmp = tmpInput[i], j = i; while(j > 0 && tmpInput[j-1] > tmp) { tmpInput[j] = tmpInput[j-1]; j--; } tmpInput[j] = tmp; if(flag == true) return true; } return false;}void mergeSort(){ bool flag = false; for(int step = 2;step / 2 <= n;step *= 2) { if(step != 2 && isSame(tmpInput, changed)) { flag = true; } for(int i = 0;i < n;i += step) { sort(tmpInput+i, tmpInput+min(i+step, n)); } if(flag == true) return; }}void printArray(int a[]){ printf("%d", a[0]); for(int i = 1;i < n;i++) { printf(" %d", a[i]); } putchar('\n');}int main(){ freopen("in.txt", "r", stdin); scanf("%d", &n); //printf("n = %d\n", n); for(int i = 0;i < n;i++) { scanf("%d", &input[i]); tmpInput[i] = input[i]; } for(int i = 0;i < n;i++) { scanf("%d", &changed[i]); //printf("%d ", changed[i]); } //putchar('\n'); if(insertSort()) { printf("Insertion Sort\n"); printArray(tmpInput); } else { printf("Merge Sort\n"); for(int i = 0;i < n;i++) { tmpInput[i] = input[i]; } mergeSort(); printArray(tmpInput); } return 0;}
-TBC-
0 0
- 1089.Insert or Merge (25)...to be continued...
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- 1089. Insert or Merge (25)
- kinect2.0同分辨率采集RGB-D图像并保存,并显示人体骨架
- Ubuntu开发环境搭建(2)【安装arm-linux-gcc-4.4.3交叉编译环境】
- LeetCode:Relative Ranks
- 排序--插入排序
- redis与memcached比较
- 1089.Insert or Merge (25)...to be continued...
- Crackme 30
- MongoDB文档翻译-mongo Shell-给mongo Shell编写脚本
- MyBatis:Parameter Maps collection does not contain value for 的问题解决
- jsp:useBean简单使用方法以及范例
- pycharm +scrapy 运行报错:[twisted] CRITICAL: Unhandled error in Deferred
- 直播+时尚跨界掀起新玩法,传统时装行业变革在即
- PAT甲级 1002
- mysql 动态创建表、添加数据