现在的位置: 首页 > 综合 > 正文

二分法获取值的index

2018年02月18日 ⁄ 综合 ⁄ 共 930字 ⁄ 字号 评论关闭

这里我以Android为例;

首先需要对一个数组排序;

private Button btn;
	private EditText et1;
	private EditText et2;
	private int count;
	private int[] val = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn = (Button) findViewById(R.id.button1);
		et1 = (EditText) findViewById(R.id.editText1);
		et2 = (EditText) findViewById(R.id.editText2);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				int value = Integer.parseInt(et2.getText().toString().trim());
				int index = getIndex(value);
				if (index == -1)
					et1.setText("index=-1,未找到需要的数字" + ",共循环" + count + "次");
				else {
					et1.setText("index=" + index + ",共循环" + count + "次");
				}
			}
		});
	}

	private int getIndex(int value) {
		count = 0;
		int start = 0;
		int end = val.length - 1;
		int index = -1;
		while (start <= end) {
			index = start + Math.round((end - start) / 2);
			count++;
			if (val[index] == value)
				return index;
			else if (val[index] < value)
				start = index + 1;
			else
				end = index - 1;
		}
		return -1;
	}

代码很简单。动手试试就知道了。

抱歉!评论已关闭.