设为首页收藏本站

职业吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 416|回复: 1

算法(1,2)

[复制链接]

15

主题

15

帖子

53

积分

网站编辑

Rank: 8Rank: 8

积分
53
发表于 2017-2-3 23:14:17 | 显示全部楼层 |阅读模式
1、用Java写一个冒泡排序。?
答:冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:
import java.util.Comparator;
/**
* 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换)
*
*/public interface Sorter {
   /**
    * 排序
    * @param list 待排序的数组
    */
   public <T extends Comparable<T>> void sort(T[] list);
   /**
    * 排序
    * @param list 待排序的数组
    * @param comp 比较两个对象的比较器
    */
   public <T> void sort(T[] list, Comparator<T> comp);
}
import java.util.Comparator;
/**
* 冒泡排序
*
*/public class BubbleSorter implements Sorter {
    @Override
    public <T extends Comparable<T>> void sort(T[] list) {
        boolean swapped = true;
        for (int i = 1, len = list.length; i < len && swapped; ++i) {
            swapped = false;
            for (int j = 0; j < len - i; ++j) {
                if (list[j].compareTo(list[j + 1]) > 0) {
                    T temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                    swapped = true;
                }
            }
        }
    }
    @Override
    public <T> void sort(T[] list, Comparator<T> comp) {
        boolean swapped = true;
        for (int i = 1, len = list.length; i < len && swapped; ++i) {
            swapped = false;
            for (int j = 0; j < len - i; ++j) {
                if (comp.compare(list[j], list[j + 1]) > 0) {
                    T temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                    swapped = true;
                }
            }
        }
    }
}
2、用Java写一个折半查找。?
答:折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这种搜索算法每一次比较都使搜索范围缩小一半,其时间复杂度是O(logN)
import java.util.Comparator;
public class MyUtil {
   public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {
      return binarySearch(x, 0, x.length- 1, key);
   }
   // 使用循环实现的二分查找
   public static <T> int binarySearch(T[] x, T key, Comparator<T> comp) {
      int low = 0;
      int high = x.length - 1;
      while (low <= high) {
          int mid = (low + high) >>> 1;
          int cmp = comp.compare(x[mid], key);
          if (cmp < 0) {
            low= mid + 1;
          }
          else if (cmp > 0) {
            high= mid - 1;
          }
          else {
            return mid;
          }
      }
      return -1;
   }
   // 使用递归实现的二分查找
   private static<T extends Comparable<T>> int binarySearch(T[] x, int low, int high, T key) {
      if(low <= high) {
        int mid = low + ((high -low) >> 1);
        if(key.compareTo(x[mid])== 0) {
           return mid;
        }
        else if(key.compareTo(x[mid])< 0) {
           return binarySearch(x,low, mid - 1, key);
        }
        else {
           return binarySearch(x,mid + 1, high, key);
        }
      }
      return -1;
   }
}
说明:上面的代码中给出了折半查找的两个版本,一个用递归实现,一个用循环实现。需要注意的是计算中间位置时不应该使用(high+ low) / 2的方式,因为加法运算可能导致整数越界,这里应该使用以下三种方式之一:low + (high - low) / 2low + (high low) >> 1(low + high) >>> 1>>>是逻辑右移,是不带符号位的右移)

回复

使用道具 举报

0

主题

2

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2017-11-10 11:54:25 | 显示全部楼层
  嫁得好的面相

  1.鼻梁高耸:夫星好

  一般来说,女性能否嫁得如意郎君和合术成功率,其中最重要就是看看鼻子。我们知道在面相学来说,由于鼻是代表“夫星”,因此只要看鼻就能知夫。女性的鼻不需过大,最重要是“规规正正,无起节及歪斜”,达到这个基本的条件,就有机会觅得如意郎君。此外,鼻相还有一点要注意,就是两边鼻翼要匀称有肉,鼻梁要丰隆及高耸。如果鼻子高但削,鼻梁低而扁都不算合格。

  2.颧部适中:助夫事业

  还有就是,除了鼻子要生得好之外,还要与颧部道家七日和合术互相配合,才能相得益彰。女性以鼻为夫星,双颧就是旁边的拱卫,代表丈夫的支持力。不少成功男人背后不止要有个好太太,还需要一个在工作上能帮一把的贤内助,令事业更上一层楼,财富自然滚滚来,因此女性的颧部正是丈夫会否有得力助手的指标。女性理想的颧部不宜过高,被人下和合术怎么破

  亦不宜太大,最好大小适中,鼻和颧合比例,并非一味多肉就是福相。相反,如果颧骨太高鼻子又大,该女性极有可能事业心太重,好胜逞强,虽然能力出众,但太好和合术咒语

  胜反而容易与丈夫起争执,到非嫁给好丈夫并能白首偕老之相了。

  3.下巴够圆:嫁得贵人

  星座屋面相术学解说,下巴代表贵人,下巴生得浑圆的女和合术最简单的方法

  性除可旺夫之外,夫君也是其贵人,两人相辅相成。另外,下巴在相学上也称为“地阁”,是代表下一代的部位。下巴浑圆有肉,代表有“后福”,即表示下一代十分算命

  乖巧,能孝顺父母,还可以继承父亲的事业。

  4.额阔平满:夫家有护荫

  如果,女性生得鼻高颧好,说明很有机会嫁入豪门。其中丈夫是白手兴家,或是继承父荫的,其实可以在面相中看到。在女性面相之中,额代表丈夫有父母作靠山。女和合术真的有用吗

  人额头生得平满宽阔,代表夫家有祖业留下来。而额好还代表与家中长辈缘分好,两代沟通没问题,绝少会发生婆媳纠纷,而影响大家感情。 推荐阅读:嫁得好的女人面相

  容易嫁得好的女人面相

  第一、鼻准浑圆、鼻梁不陷

  得老公疼、老公事业有成。鼻准要有肉,不能太大太小,更不能鼻头尖,而且鼻梁不可以陷下去,有这样的鼻子的女生可以吸引好的男人,自然可以嫁给好老公。

  第二、下巴宽厚:公婆疼、夫家有祖产

  下巴宽厚的女心情很好,很愉快,不但嫁的老公家中有祖产,而且公公婆婆也会很疼爱。

  第三、天仓开阔

  老公出身豪门、相处愉快。

  眉毛尾巴跟头发之间叫做天仓,天仓开阔的女人除了本算命

  身容易得到祖先的荫泽,而且也可以嫁个好老公。

  第四、耳珠垂

  老公白手起家、妯娌好相处。耳朵太小没有珠的人个性很急躁,因此跟妯娌相处时自然口舌是非会比较多,耳朵代表钱财,有珠的人通常父母亲一定会留财产,就算没有留,她的老公自己也会白手起家。

  第五、嘴巴菱角分明

  老公有大房子又体贴。嘴巴菱角嘴,而且略略上扬,不讲话时像在微笑的女人很注重生活品质,因此在恋爱选择的过程中,选到的老公通常会让她生活品质不错,因此往往都会有蛮不错的房子。











算命|seo
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|职业助手吧    

GMT+8, 2018-2-20 05:59 , Processed in 0.081542 second(s), 27 queries , Gzip On.

Powered by zhiye8.net

© 2016-2017 zhiye8.net

快速回复 返回顶部 返回列表