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 }

 

posted @ 2017-11-12 21:59  空芯菜  阅读(214)  评论(0编辑  收藏  举报