分治演算法-----二分求最大最小
例題1:給n個實數,求它們之中最大值和最小值,要求比較次數儘量小。
思路:用遞迴呼叫函式,在函式裡做出以下判斷:
1 若left==right(只有一個數) max和min都為這個數
2 若left==right-1(只有兩個數) max為較大的,min為較小的
3 除以上兩種以外 首先定義中間值d,在遞迴呼叫left到d與d+1到right的函式,max為兩函式返回值的最大值,min為最小值
核心思路如上
原始碼:
錯誤原因:思路沒錯,但11行的if前面沒有else,導致15行的else只建立在11行的if上,與思路不符,把if前面填個else即可:
沒有考慮到第11行如果沒有else,那樣15行的else只對應著11行的if,而與7行的if沒有關係,而當right1left1時,right1不等於left1加1,所以當left1
經驗教訓:
在今後使用if…else進行判斷時,儘量用if…if …if 來代替(當然漏掉的可能性會增加),爭取不重複,不漏掉.
相關推薦
分治演算法-----二分求最大最小
例題1:給n個實數,求它們之中最大值和最小值,要求比較次數儘量小。 思路:用遞迴呼叫函式,在函式裡做出以下判斷: 1 若left==right(只有一個數) max和min都為這個數 2 若left==right-1(只有兩個數) max為較大的,min為較小的
遞迴求最大最小值演算法 分治策略(c語言實現)
思路:運用分治的思想,將要排序的整個陣列從中間劈開,分別求其左右兩邊的最大最小值,然後將求出的最大最小值合起來進行比較。 當左右兩邊的陣列小到一定程度時: (1)陣列中只有一個元素,maxNum=mi
Hadoop鏈式MapReduce、多維排序、倒排索引、自連線演算法、二次排序、Join效能優化、處理員工資訊Join實戰、URL流量分析、TopN及其排序、求平均值和最大最小值、資料清洗ETL、分析氣
Hadoop Mapreduce 演算法彙總 第52課:Hadoop鏈式MapReduce程式設計實戰...1 第51課:Hadoop MapReduce多維排序解析與實戰...2 第50課:HadoopMapReduce倒排索引解析與實戰...3 第49課:Hado
模擬退火演算法求函式最大、小值——python實現
模擬退火演算法(Simulate Anneal,SA)是一種通用概率演演算法,用來在一個大的搜尋空間內找尋命題的最優解。模擬退火是由S.Kirkpatrick, C.D.Gelatt和M.P.Vecchi在1983年所發明的。V.Černý在1985年也獨
遞迴求陣列最大最小值(分治思想)
求陣列最大最小值我們可以用遍歷或者最簡單的排序方法來實現,但是那樣子的時間複雜度將會大很多,因此我們可以採用分治思想來求最大最小值,即先求左右兩部分,即先求出左半部分的最大最小值,再求出右半部分的最大最小值,然後再把左右兩部分的最大最小值合起來求總的最大最小值。 程式碼如下
RMQ演算法 快速求區間最大最小值
RMQ基本上就是來求區間嘴子問題的 maxsum【i】【j】表示從數字num【】下表i開始的後1<<j個數的最大值minsum為最小值 開始初始化兩個陣列 for(i=1;i<=n;i++) { m
分治算法 ------數組的最大最小值
nbsp span 最大 技術分享 www images 如果 chinese 1-1 終於 找到課程鏈接了,太贊了,屈婉玲老師真的太厲害了! http://www.chinesemooc.org/kvideo.php?do=course_progress&kvid
求二叉樹最大最小深度
als 最小 log root roo null mat dep tde 1.求二叉樹最大深度 public int maxDepth(TreeNode root) { if(root==null){ return 0;
求數組最大值小的最大值?
etsec set ack public 參數 util eset 包裝 ret package com.demo; import java.util.Arrays;import java.util.List;import java.util.TreeSet; public
分治法求最大最小
即使 OS clas 判斷 如果 nbsp pos pre printf 1 #include<stdio.h> 2 /* 分治法計算最大值和最小值的算法程序,遞歸實現 */ 3 void maxmin2(int d[], int left, int r
JS基礎:求一組數中的最大最小值,以及所在位置
們的 con style 兩個 元素 nbsp 位置 最小值 font 1 var arr = [0, 5, -3, 6, 2, -6, 10]; 2 //定義一個最大值和一個最小值,把他們的索引值賦值給固定的兩個變量 3
求傳入N個參數的最大最小值
fun turn elif pri 參數 print def pre 最小值 def fun2(*args): m=args[0] m1=args[0] for l in args: if l>m: m=l
求出在某個經緯度方圓多少公裏返回的最大最小經緯度
param result 賦值 地球 gps 返回 edi pack elong java代碼,計算在地圖上某個點,以這個點為中心,覆蓋若幹公裏範圍的最大和最小經緯度 package test; public class MainClass {
POJ 3258 River Hopscotch (最大最小距離)【二分】
poj ont str () scanf esp https ast clas <題目鏈接> 題目大意:現在有起點和終點兩個石塊,這兩個石塊之間有N個石塊,現在對這N個石塊移除M個石塊,使得這些石塊之間的最短距離最大,註意,起點和終點這兩個石塊不能被移除。 解題
冪迭代和逆冪迭代求最大最小特徵值
參考連結 https://wenku.baidu.com/view/ee7ecbeca98271fe910ef9fc.html?from=search 冪迭代演算法: 逆冪迭代演算法: 實際在使用中A可以先進行LU分解 無論是冪迭代,還是逆冪迭代,只能求出最大和最
【POJ - 3273 】Monthly Expense (二分,最大最小值)
題幹: Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recor
POJ 3264 線段樹求區間最大最小值
很裸的線段樹,沒有什麼好說的,我把根節點所擁有的左右區間都寫在結構體裡面,這樣傳參的時候比較方便。 POJ不支援萬能頭很不習慣。 #include<iostream> #include<cstdio> using namespace std; const int
分治演算法-java求最大子陣列問題
今天看演算法導論的時候,就想著動紙和筆來思考分治演算法求最大子陣列的方案 首先我們分析問題,我們把陣列看成 a [ low, high] ,將要用分治法求出其最大的子陣列,用分治法相當於我們要把陣列分成兩個規模儘量相等的子陣列 (因為有時候陣列長度是奇數,無法區分),找到陣列的中間位置mid,這樣
C語言中求最大最小值的庫函式
最近在倒騰演算法,遇到了求三個數中最小的那個運算,自己寫了一個,發現還是大學水平,在網上發現了一個比較好的例子,這就記錄下了。 #include <stdio.h> int min_fun(int a, int b, int c) { int min;
用Hadoop的MapReduce求最大最小值
最近在系統學習大資料知識,學了沒有記錄過幾天又忘光了,所以把學習內容記錄下來,方便以後檢視 找出資料中的最大值和最小值 輸入資料格式: 4568 2 6598 2222222 8899 3 7 9