1、写一个函数,用最简洁的语句实现如下功能:当i和j的和等于14时,返回他们的平均数,否则返回任意一个数。
public int fun(int i, int j)2.完成下面的程序,使用快排、或冒泡、或插入等你所熟悉的排序算法对nums里的数据排序。(如果你实在对JAVA不熟悉,可以使用其他任何语言实现)。(20分)
import java.util.*;
class Sorter
{
public List<Integer> sort(List<Integer> nums)
{需要详细的解释哈

解决方案 »

  1.   

    public int fun(int i, int j) {
          if(i+j == 14){
      return (i+j)/2;
    }else{
          return Math.random()*(i+j)
    }
    不知道...
      

  2.   


    通过循环去取数组里面的值
    假设第一个数字是最大的,把它赋值给nums[0]
    再去跟后面的值去判断 if(nums[0]>nums[i+1])
    如果后面后面的值比前面的大 就调换
      

  3.   

    一、public int fun(int i, int j) {
          if(i+j == 14){
              return (i+j)/2;
        }else{
          return Math.random();
        }
    二、
    public List <Integer> sort(List <Integer> nums) {
    int k;
    for(int i=0;i<nums.size();i++){
        k=i;
        for(int j=k+1;j<nums.size();j++){
            if(nums.get(j) < nums.get(k)) {
                k = j;
            }
        }
        if(k != i) {
            int temp = nums.get(i);
    nums.get(i) = nums.get(k);
    nums.get(k) = temp;
        }
    }
    return nums;
    }
      

  4.   

    第一题中“否则返回任意一个数”应该是指返回i和j其中的任意一个吧。
    要尽量简洁的话我会这样写:public int fun(int i, int j) {
      if (i + j == 14) return 7;
      return Math.random() > 0.5 ? i : j;
    }解释:i和j的和为14时,平均一定是7,所以直接返回7,不用再做一次额外加法和除法了。否则返回i和i中的任意一个。第二题,排序的代码网上一大堆,我就不写了。
      

  5.   

    public int fun(int i, int j) {
      if (i + j == 14) return 7;
      return Math.random() > 0.5 ? i : j;
    }
      

  6.   

    为什么不这样
    public int fun( int i , int j ){
    return i + j == 14 ? ( i + j ) / 2 : Math.random() > 0.5 ? i : j ;
    }