演算法設計與計算(改寫二分搜尋演算法)(教材2-3)
二分搜尋 設a[0:n-1]是一個已排好序的陣列。請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,返回小於x的最大元素的位置I和大於x的最大元素位置j
public static int binarySearch(int []a,int x,int n) {int left=0; int right=n-1; int i=j=0; while(left<=right) {int middle=(left+right)/2 if(x==a[middle]) {i=j=middle; cout<<i<<" "<<j<<endl; return true; //如果搜尋元素在陣列中,i=j=middle為x的位置 } if(x>a[middle]) left=middle+1 else right=middle-1; } i=right; j=left; cout<<i<<" "<<j<<endl; return false; }
相關推薦
演算法設計與計算(改寫二分搜尋演算法)(教材2-3)
二分搜尋 設a[0:n-1]是一個已排好序的陣列。請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,返回小於x的最大元素的位置I和大於x的最大元素位置j public static int binarySearch(int []a,int x,int n) {int left=0; int r
『嗨威說』演算法設計與分析 - 演算法第二章上機實踐報告(二分查詢 / 改寫二分搜尋演算法 / 兩個有序序列的中位數)
本文索引目錄: 一、PTA實驗報告題1 : 二分查詢 1.1 實踐題目 1.2 問題描述 1.3 演算法描述 1.4 演算法時間及空間複雜度分析 二、PTA實驗報告題2 : 改寫二分搜尋演算法 2.1 實踐題目 2.2 問題描述
改寫二分搜尋演算法
一、實踐題目 改寫二分搜尋演算法 二、問題描述 設a[0:n-1]是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。 輸入格式: 輸入有兩行:
改寫二分搜尋演算法及對於問題的理解
1、實踐題目: 改寫二分搜尋演算法 2、問題描述: 設陣列a[0:n-1]已排好序,輸入一個整數x。 ①當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。 ②當x在陣列中時,i和j相同,均是x在陣列中的位置。 輸入:第一行是n值和x值,第二行是n個不相同的
演算法設計與分析--求最大子段和問題(蠻力法、分治法、動態規劃法) C++實現
演算法設計與分析--求最大子段和問題 問題描述: 給定由n個整陣列成的序列(a1,a2, …,an),求該序列形如 的子段和的最大值,當所有整數均為負整數時,其最大子段和為0。 利用蠻力法求解: int maxSum(int a[],int n) { int ma
演算法:改寫二分搜尋演算法
設a[0:n-1]是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。問題來源:題目來源:《計算機演算法設計與分析》王曉東 輸入格式: 輸入
演算法設計與分析05-最近點對演算法
1.題目描述: 設S是平面上n個點的集合,在這一節中,我們考慮在S中找到一個點對p和q的問題,使其相互距離最短。換句話說,希望在S中找到具有這樣性質的兩點p1 = (x1,y1)和p2 = (x2,y2),使它們間的距離在所有S中點對間為最小 2.解題思路 一共分為三種情況 情況1:
演算法設計與分析——第二篇,論演算法與資料結構的使用方法及技巧
寫在前面的話—— 這篇的主體內容其實就是抄書,不過個人覺得我選的還是比較有意義的內容,書上也沒有程式碼,所以程式碼是我自己寫的,比較簡單的題目了,演算法前面的題目或者說知識點都比較初級 本片全文摘抄自我的課本《演算法設計與分析》,呂國英主編,有興趣的小夥伴可以去看看這本書!
計算機演算法設計與分析之遞迴與分治策略——二分搜尋技術
遞迴與分治策略 二分搜尋技術 我們所熟知的二分搜尋演算法是運用分治策略的典型例子,針對這個演算法,先給出一個簡單的案例。 目的:給定已排好序的n個元素a[0:n-1],現要在這n個元素中找出一特定的元素x。 我們首先想到的最簡單的是用順序搜尋方法,逐個比較a[0:n-1]中元素,直至找出元
演算法設計與分析——動態規劃(一)矩陣連乘
動態規劃——Dynamic programming,可以說是本人一直沒有啃下的骨頭,這次我就得好好來學學Dynamic programming. OK,出發! 動態規劃通常是分治演算法的一種特殊情況,它一般用於最優化問題,如果這些問題能夠: 1.能夠分解為規模更小的子問題 2.遞迴的
演算法與設計經典題:大整數乘法(教材2-4)
給定兩個整數u和v,他們分別有m和n為數字,且m≤n,用通常的乘法求uv的值需要O(mn)時間,可以將u和v均看作是有n位數字的大整數,用本章介紹的分治法,在O(n^(log3))時間內計算uv的值,當m<<n時,此法效率不高。設計演算法在O(nlog2/3)時間計算uv的值 在O(
演算法設計與分析(二)
53.Question Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum a
演算法設計與分析(二):Divide And Conquer
Maximum Subarray Given an integer array nums, find the contiguous subarray (containing at least one number) which has the larges
演算法設計與分析(三)
53.Course Schedule There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prerequisites, for
演算法設計與分析(一)——遞迴與分治
目錄 D、走迷宮 提示: 提示: NOJ 2018.9.21 A、二分查詢 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 給定一個單調遞增的整數序列,問某個整數是否在序列中。 輸入
演算法設計與分析第四周練習(圖論)
Network Delay Time 1. 題目 There are N network nodes, labelled 1 to N. Given times, a list of travel times as directed edges times[i
演算法設計與分析:K-Similar Strings(Week 5)
學號:16340008 Question: Strings A and B are K-similar (for some non-negative integer K) if we can swap the positions of two letters in A
演算法設計與分析(六)(上週第五週的寫錯標題,這才是真正的第六週)
Merge k Sorted Lists 題目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Example:
演算法設計與分析:Burst Balloons(Week 6)
學號:16340008 Question: Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by array nums.
演算法設計與分析(五):Graph And Tree
Couples Holding Hands N couples sit in 2N seats arranged in a row and want to hold hands. We want to know the minimum number of swa