按要求获得序列
题目:
给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1};
input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}
函数接口 void sort(int input[], int n, int output[])
#include <iostream> using namespace std; void sort(int input[], int n, int output[]); int main() { int input[] = {3, 6, 1, 9, 7}; int output[5]; sort(input, 5, output); int input2[] = {3, 6, 1, 9, 7, 8}; int output2[6]; sort(input2, 6, output2); return 0; } void sort(int input[], int n, int output[]) { //选择法排序(从大到小) for (int i=0; i<n; i++) { for (int j=i+1; j<n; j++) { if (input[i] < input[j]) { int tmp = input[i]; input[i] = input[j]; input[j] = tmp; } } } for (int i=0; i<n; i++) { cout << input[i] << ","; } cout << endl; int mid;//存放最大数的位置 if (n%2 != 0)//奇数 { mid = (n-1)/2; } else//偶数 { mid = n/2; } int k=1; output[mid] = input[0]; for (int i=1; i<n; i++) { k = (i+1)/2; if (i%2 != 0) { output[mid-k] = input[i]; } else { output[mid+k] = input[i]; } } for (int i=0; i<n; i++) { cout << output[i] << ","; } cout << endl; }
作者:涵曦(www.hanxi.cc)
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
《 Skynet 游戏服务器开发实战》
-
学习地址:
-
优惠推荐码:
2CZ2UA5u
-
可以先免费试学前 2 章内容