zoukankan      html  css  js  c++  java
  • 2017-11-12

    program:

      将一个数组的最大元素与第一个元素交换,最小元素与最后一个元素交换

    代码如下:

     1 /*
     2  * 求解:将一个数组的最大元素与第一个元素交换,最小元素与最后一个元素交换
     3  * 
     4  * Date Written:2017-11-12
     5  * 
     6  * */
     7 
     8 package test;
     9 
    10 public class TestDemo {
    11     
    12     public static void main(String args[]) {
    13     
    14         int[] nums = {3,6,1,8,0,2,9,2,5};        //自定义数组
    15         
    16         operate(nums);        //调用算法,实现数组的操作
    17         display(nums);        //打印数组
    18     }
    19     
    20     public static void operate(int[] nums) {
    21         
    22         int maxIndex = 0;                //存放最大值下标,初始值为0
    23         int minIndex = nums.length - 1;  //存放最小值下标,初始值为最后一个值下标
    24         boolean flag = false;            //记录最大值和最小值的下标初始值是否发生变化,若果变化,则不进行swap()操作
    25         
    26         /*
    27          * 因为上面最大和最小下标初始值的缘故,所以循环从第二个元素开始到倒数第二个元素结束
    28          * */
    29         for( int i = 1; i < nums.length-1; i++ ) {
    30             
    31             if( nums[i] > nums[maxIndex] ) {        //记录最大值下标
    32                 
    33                 maxIndex = i;
    34                 flag = true;
    35             }
    36             
    37             if( nums[i] < nums[minIndex] ) {        //记录最小值下标
    38                 
    39                 minIndex = i;
    40                 flag = true;
    41             }
    42         }
    43 
    44         if( flag ) {            //如果最大值不在第一位且最小值不在最后一位,就进行交换
    45             swap(nums, maxIndex, minIndex);
    46         }
    47         
    48     }
    49     
    50     /*
    51      * 根据最大值和最小值的下标,将最值元素移动到相应的位置
    52      * */
    53     public static void swap(int[] nums,int maxIndex,int minIndex) {
    54         
    55         int temp = 0;
    56         if( maxIndex != 0 ) {        //最小值交换
    57             
    58             temp = nums[maxIndex];
    59             nums[maxIndex] = nums[0];
    60             nums[0] = temp;
    61         }
    62         
    63         if( minIndex != nums.length - 1 ) {        //最大值交换
    64             
    65             temp = nums[minIndex];
    66             nums[minIndex] = nums[nums.length-1];
    67             nums[nums.length-1] = temp;
    68         }
    69         
    70     }
    71     
    72     //打印数组
    73     public static void display(int[] nums) {
    74         
    75         for( int i = 0; i < nums.length; i++ ) {
    76             
    77             System.out.print(nums[i] + "  ");
    78         }
    79     }
    80 
    81 
    82 }
  • 相关阅读:
    构建调试Linux内核网络代码的环境MenuOS系统
    stm32内存管理
    STM32CubeMx——ADC多通道采集
    STM32CubeMx——串口使用DMA收发数据
    STM32CubeMx——串口收发
    stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(二)
    stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)
    STM32F103RCT6移植到STM32F103C8T6注意事项
    关于STM32F103系列从大容量向中容量移植的若干问题
    KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法
  • 原文地址:https://www.cnblogs.com/caizhen/p/7823149.html
Copyright © 2011-2022 走看看