你好,游客 登录 注册 搜索
背景:
阅读新闻

特定字符输出及二分查找 简单面试编程题

[日期:2014-10-29] 来源:Linux社區  作者:wangxin88 [字体: ]

特定字符输出字符,如下所示:

input num :=2

output:as follow

layer 1
*
layer 2
 *
***

input num :=4

output:as follow

layer 1
*
layer 2
 *
***
layer 3
  * 
 ***
*****
layer 4
  * 
  *** 
 *****
*******

package com.java.interview.t_20140813;
 
import java.awt.DisplayMode;
import java.util.Scanner;
 
/**
 * name: Test_Show.java
 *
 * date:2014-8-13 19:25:37
 *
 * function: output the special signals
 *
 * copyright: open
 *
 * @author wangxin
 *
 */
public class Test_Show {
    public static void main(String[] args) {
        while (true) {
            System.out
        .println("Please input the num that you want to get! (< 0 to end)");
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
            if (num <= 0) {
                System.out.println("Error input, end the program!");
                break;
            } else {
                // show(num);
                display(num);
            }
        }
    }
 
    private static void display(int num) {
        for (int i = 0; i < num; i++) {
            System.out.println("layer " + (i + 1));
            show(i + 1);
        }
    }
 
    private static void show(int num) {
        for (int i = 0; i < num; i++) {
            show_blank(num - i - 1);
            show_singal(i + 1);
            show_blank(num - i - 1);
            System.out.println();
        }
    }
 
    private static void show_singal(int num) {
        for (int i = 0; i < 2 * num - 1; i++) {
            System.out.print("*");
        }
        // System.out.println();
    }
 
    private static void show_blank(int num) {
        for (int i = 0; i < num; i++) {
            System.out.print(" ");
        }
    }
}

二分法查找给定元素的位置<升序default>:

递归:

private static int binarySearch(List<Integer> list, int key, int low,
        int high) {
    if (low > high)
        return -1;
    int mid = (low + high) / 2;
    if (list.get(mid) == key) {
        return mid;
    } else if (list.get(mid) < key) {
        return binarySearch(list, key, mid + 1, high);
    } else {
        return binarySearch(list, key, low, mid - 1);
    }
}

非递归:

public static int binary_Search(int[] array, int value) {
    int low = 0;
    int high = array.length - 1;
    while (low <= high) {
        int middle = (low + high) / 2;
        if (value == array[middle]) {
            return middle;
        }
    if (value > array[middle]) {
          low = middle + 1;
        }
    if (value < array[middle]) {
            high = middle - 1;
        }
    }
        return -1;
}

Golang二分查找算法的简单实现 http://www.linuxidc.com/Linux/2014-02/96093.htm

二分查找改进版 http://www.linuxidc.com/Linux/2013-10/91721.htm

二分查找的实现及注意事项 http://www.linuxidc.com/Linux/2013-07/87308.htm

用Python实现二分查找 http://www.linuxidc.com/Linux/2012-12/75948.htm

二分查找之Java实现 http://www.linuxidc.com/Linux/2012-05/59869.htm

Java针对数组的普通查找法和二分查找法 http://www.linuxidc.com/Linux/2012-03/57065.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-10/108641.htm

linux
相关资讯       二分查找 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款