zzuli OJ 1120: 最值交换

2023-12-20 19:58
文章标签 交换 oj 最值 zzuli 1120

本文主要是介绍zzuli OJ 1120: 最值交换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。

int MinIndex(int a[], int n);  //函数返回数组a中最小元素的下标

int MaxIndex(int a[], int n);  //函数返回数组a中最大元素的下标

数组元素的输出调用函数PrintArr()。

Input

输入包括两行。 
第一行为正整数n(1≤n≤10)。 
第二行为n个正整数组成的序列,保证没有重复元素。

Output

输出转换好的序列。数据之间用空格隔开。

Sample Input

55 4 1 2 3

Sample Output

1 4 3 2 5

HINT

Source

#include<stdio.h>
int	MinIndex(int a[],int n);
int	MaxIndex(int a[],int n);
void PrintArr(int a[],int n);
int main(){int a[10],i,j,n;int max_flag,min_flag;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}//获取最小值下标min_flag= MinIndex(a,n);//最小值与第一个数交换 j=a[0];a[0]=a[min_flag];a[min_flag]=j;//获取最大值下标max_flag= MaxIndex(a,n);//最大值与最后一个数交换 j=a[max_flag];a[max_flag]=a[n-1];a[n-1]=j;PrintArr(a,n);return 0;
}
int MinIndex(int a[],int n){int i ,min=a[0],flag;for(i=0;i<n;i++){if(min>a[i]){min=a[i];flag=i;}}return flag;
}
int MaxIndex(int a[],int n){int i ,max=a[0],flag;for(i=0;i<n;i++){if(max<a[i]){max=a[i];flag=i;}}return flag;
}
void PrintArr(int a[],int n)
{int i;for(i=0;i<n-1;i++)printf("%d ",a[i]);printf("%d",a[n-1]);return;
}			

这篇关于zzuli OJ 1120: 最值交换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517294

相关文章

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【数据结构入门】排序算法之交换排序与归并排序

前言         在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。  一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想 它的基本思想是通过相邻元素的比较和交换,让较大的元素逐渐向右移动,从而将最大的元素移动到最右边。 动画演示: 1.1.2 具体步

不设临时变量交换a,b的值

常规的做法: int tmp = a; a = b; b = tmp; 不设中间变量的方法: a = a + b; b = a - b; a = a - b;

交换两个变量数值的3种方法

前言:交换两个数值可不是"a = b,b = a"。这样做的话,a先等于了b的值;当“b = a”后,因为此时a已经等于b的值了,这个语句就相当于执行了b = b。最终的数值关系就成了a == b,b == b。 下面教给大家3种交换变量数值的方法: 目录 1. 中介法 2. 消和法 3. 异或法 4. 总结 1. 中介法 中介法(又称 临时变量法 或 酱油法),其中心

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 7(5 users)Total Accepted: 6(5 users)Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出。 Input 第一行是一个整

用异或交换两个整数的陷阱

前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量。 如下面: void exchange(int &a, int &b) {     a ^= b;     b ^= a;     a ^= b; } 然而,这里面却存在着一个非常隐蔽的陷阱。 通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &b[j]),

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和(递归深搜) 解析代码 牛客_求和(递归深搜) 求和_好未来笔试题_牛客网 解析代码         递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。 #include <iostream>#include <cmath>#in

常见的交换变量的三种方法

常见的交换变量的三种方法     在项目中,两个变量之间交换位置在常见不过了,如进行排序。     下面说下常见的三中变量交换模式。 1、定义中间变量 #include <stdio.h>int main(){int a=9, b=3; //方法一://交换两个变量值的常规做法int tmp=a;a=b;b=tmp;printf("a=%d b=%d\n",a,b);

Leetcode面试经典题-24.两两交换链表中的节点

解法都在代码里,不懂就留言或者私信 这里先写一个递归的解,如果后面有时间,我再写个迭代的 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val =