华为:给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数。。 .

来源:互联网 发布:手机qq软件 编辑:程序博客网 时间:2024/04/26 01:41
01./* 02.给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置, 03.如果数组长度n为偶数,则将数组中最大的元素放到  04.output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边, 05.按照一左一右的顺序,依次存放剩下的数。  06.例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; 07. input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}  08.函数接口 void sorts(int input[], int n, int output[]  09.*/  10.#include<cstdio>    11.#include<cstring>   12.#include<iostream>   13.#include<math.h>   14.using namespace std;  15./* 16.关于compare 函数:1 参数为const类型的空指针 17.                 2 a-b 时为从小到大排序  b-a时是从大到小排序 18.*/   19.int compare(const void *a,const void *b)  20.{  21.    return *(int *)b-*(int *)a;  22.}  23.void sorts(int input[], int n, int output[])   24.{   25.    int i;   26.    int j;   27.    qsort(input, n,sizeof(input[0]),compare);   28.    if(n%2 == 1)  //最大值放到中间位置,数组元素个数为奇数时的情况   29.    {   30.        output[(n-1)/2]= input[0];     31.        /*中间放置最大值input[0] 左边放置input[1,3,5...]*/  32.        j=1;   33.        for(i=(n-1)/2-1;i>=0;i--)    //先放置前一部分   34.        {   35.            output[i] = input[j];   36.            j+=2;   37.        }  38.        /*中间放置最大值input[0] 右边边放置input[2,4,6...]*/  39.        j=2;   40.        for(i=(n-1)/2+1;i<n;i++)   41.        {   42.            output[i] = input[j];   43.            j+=2;   44.        }   45.    }   46.    else if(n%2 == 0) //最大值放到中间位置,数组元素个数为偶数时的情况   47.    {   48.        /*注意:n为数组元素个数(偶数),n-1为数组最大下标为奇数,(n-1+1)/2为中间偏右的位置*/  49.        output[(n)/2]= input[0];   50.        j=1;   51.        for(i=(n)/2-1;i>=0;i--)   52.        {   53.            output[i] = input[j];   54.            j+=2;   55.        }   56.        j=2;   57.        for(i=(n)/2+1;i<n;i++)   58.        {   59.            output[i] = input[j];   60.            j+=2;   61.        }   62.    }   63.}   64.int main(/*int argc, char **argv*/)   65.{   66.    int input[6]={3,6,1,9,7,8};   67.    int output[6]={0};   68.    int i;   69.    sorts(input, 6, output);   70.    for(i=0;i<6;i++)   71.        printf("%d ",output[i]);   72.      73.    return 0;   74.}   

原创粉丝点击