九度 题目1185:特殊排序
来源:互联网 发布:java抽象类的特点 编辑:程序博客网 时间:2024/05/24 04:55
题目来源:http://ac.jobdu.com/problem.php?pid=1185
- 题目描述:
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
- 输入:
- 输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。接下来的一行有N个整数。
- 输出:
- 可能有多组测试数据,对于每组数据,第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。第二行将排序的结果输出。
- 样例输入:
41 3 4 2
- 样例输出:
41 2 3
- 提示:
如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。
- 来源:
- 2003-2005年华中科技大学计算机研究生机试真题
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1010;int Partition(int* arr, int low, int high){ int i = low, j = high+1; while(i < j) { ++i; while(arr[i] < arr[low]) ++i; --j; while(arr[j] > arr[low]) --j; if(arr[i] != arr[j] && i < j) arr[i] ^= arr[j], arr[j] ^= arr[i], arr[i] ^= arr[j]; } if(arr[j] != arr[low]) arr[j] ^= arr[low], arr[low] ^= arr[j], arr[j] ^= arr[low]; return j;}void Quick_Sort(int* arr, int low, int high){ if(low >= high) return ; int mid = Partition(arr, low, high); Quick_Sort(arr, low, mid-1); Quick_Sort(arr, mid+1, high);}int main(){ int n; int arr[MAXN], i; while(~scanf("%d", &n)) { if(n == 1) { scanf("%d", &i); printf("%d\n", i); printf("-1\n"); continue ; } for(i = 0; i < n; ++i) scanf("%d", &arr[i]); Quick_Sort(arr, 0, n-1); printf("%d\n", arr[n-1]); for(i = 0; i < n-2; ++i) printf("%d ", arr[i]); printf("%d\n", arr[n-2]); } return 0;}
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1010;int arr[MAXN], b[MAXN];void Merge(int low, int mid, int high){ int i = low, j = mid+1, k = low; while(i <= mid && j <= high) { if(arr[i] <= arr[j]) b[k++] = arr[i++]; else b[k++] = arr[j++]; } while(i <= mid) b[k++] = arr[i++]; while(j <= high) b[k++] = arr[j++]; for(i = low; i <= high; ++i) arr[i] = b[i];}void Merge_Sort(int low, int high){ if(low >= high) return ; int mid = (low + high) >> 1; Merge_Sort(low, mid); Merge_Sort(mid+1, high); Merge(low, mid, high);}int main(){ int n, i; while(~scanf("%d", &n)) { if(n == 1) { scanf("%d", &i); printf("%d\n", i); printf("-1\n"); continue ; } for(i = 0; i < n; ++i) scanf("%d", &arr[i]); Merge_Sort(0, n-1); printf("%d\n", arr[n-1]); printf("%d", arr[0]); for(i = 1; i < n-1; ++i) printf(" %d", arr[i]); printf("\n"); } return 0;}
0 0
- 【九度】题目1185:特殊排序
- 九度题目1185:特殊排序
- 九度 题目1185:特殊排序
- 九度OJ题目1185:特殊排序
- 九度oj 题目1185:特殊排序
- 九度-题目1185--特殊排序
- 【九度】题目1185:特殊排序
- 题目1185:特殊排序 九度OJ
- 【九度OJ】题目1185:特殊排序 解题报告
- 【九度OJ】题目1185:特殊排序 解题报告
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- 题目1185:特殊排序
- Scripts:查询参数信息的脚本parms.sql
- 类的sizeof
- Apache Indexes FollowSymLinks详解
- Android 停止Service
- Java 获取最大回文字符串
- 九度 题目1185:特殊排序
- AFNetworking 2.0 编译不过的问题修复
- android TabHost 导航标签
- Scripts:查询所有参数修改信息的脚本parm_mods.sql
- 书本Applet程序练习------同一页Applet之间的通信
- NYOJ 题目79 拦截导弹
- 新辰:90后大学生创业开口笑馒头店火爆全市 卖馒头日赚2000!
- Scripts:查询数据文件IO使用率的脚本 perf_file_io.sql
- Scripts:查询每个数据文件等待时间的脚本perf_file_waits.sql