日期:2014-05-20  浏览次数:20721 次

编程小算法
今天碰到一道面试题编写程序:输入一个数组,最大值和第一个交换,最小值和最后一个交换,最后输出数组。谁能帮忙写下主算法。

------解决方案--------------------
写的不好,只是参考
Java code


public class Test {

        public static int[] change(int[] a){
            int max = a[0];
            int min = a[0];
            for(int i=1;i<a.length;i++){
                if(a[i]>max){
                    max = a[i];
                }
                if(a[i]<min){
                    min = a[i];
                }
            }
            a[0] = max;
            a[a.length - 1]= min;
            return a;
        }
        public static void main(String args[]){
            int[] b = {3,2,1,5,4};
            int[] c = change(b);
            for(int j=0;j<c.length;j++){
                System.out.print(c[j]);
            }
        }
}

------解决方案--------------------
感觉就是一楼实现的样子
------解决方案--------------------
一楼果断没有实现交换。我来改改。
Java code


public class Test1 {

        public static int[] change(int[] a){
            int max = 0;
            int min = 0;
            int temp;
            
            for(int i=1;i<a.length;i++){
                if(a[i]>a[max]){
                    max = i;
                }
                if(a[i]<a[min]){
                    min = i;
                }
            }
            
            temp=a[0];
            a[0] = a[max];
            a[max] = temp;
            
            temp=a[a.length - 1];
            a[a.length - 1]= a[min];
            a[min]=temp;
            
            return a;
        }
        public static void main(String args[]){
            int[] b = {3,2,1,5,4};
            int[] c = change(b);
            for(int j=0;j<c.length;j++){
                System.out.print(c[j]);
            }
        }
}

------解决方案--------------------
探讨
一楼果断没有实现交换。我来改改。

Java code



public class Test1 {

public static int[] change(int[] a){
int max = 0;
int min = 0;
int temp;

……

------解决方案--------------------
你先把最大最小的找出来 貌似这个很好找吧 然后就是个替换
------解决方案--------------------
三楼的有点问题,改成下面的即可
Java code

for(int i=1;i<a.length;i++){
                if(a[i]>=a[max]){
                    max = i;
                }
                if(a[i]<=a[min]){
                    min = i;
                }
            }

------解决方案--------------------
java的话,用集合框架非常简单
------解决方案--------------------
做过这个题目....3L就是答案,不过要考虑下最小值是否为第一位...
------解决方案--------------------
探讨

一楼果断没有实现交换。我来改改。
Java code


public class Test1 {

public static int[] change(int[] a){
int max = 0;
int min = 0;
int temp;

for(……

------解决方案--------------------
探讨

一楼果断没有实现交换。我来改改。
Java code


public class Test1 {

public static int[] change(int[] a){
int max = 0;
int min = 0;
int temp;

for(……