zoukankan      html  css  js  c++  java
  • 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。

    // ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    class BinarySearch {
    public:
    	int getPos(vector<int> A, int n, int val) {
    		// write code here
    		int beg = 0;
    		int end = n-1;
    		int mid = (beg + end) / 2;
    		int pos = -1;
    		while (beg<=end)
    		{
    			if (A[mid] == val)
    			{
    				--mid;
    				while (A[mid]==val && mid>=0)
    				{
    					--mid;
    				}
    				pos = mid + 1;
    				break;
    			}
    			else if (A[mid] < val)
    			{
    				beg = mid + 1;
    				mid= (beg + end) / 2;
    			}
    			else
    			{
    				end = mid - 1;
    				mid = (beg + end) / 2;
    			}
    		}
    		return pos;
    	}
    };
    int main()
    {
    	vector<int> A = { 3,3,5,7,9 };
    	int n = 5, val = 3;
    	BinarySearch bs;
    	cout << bs.getPos(A, n, 3) << endl;
    
    	return 0;
    };
  • 相关阅读:
    20170519
    20170515
    20170511
    20170509
    20170505
    使用 FirewallD 构建动态防火墙
    Elasticsearch 5.2.1Cluster 搭建
    elk,centos7,filebeat,elasticsearch-head详细安装步骤
    elk,centos7,filebeat,elasticsearch-head集成搭建
    memcached
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6437724.html
Copyright © 2011-2022 走看看