一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java分治法與二分搜索算法實(shí)例分析

Java分治法與二分搜索算法實(shí)例分析

2021-02-14 22:41萌神哆啦A夢(mèng) Java教程

這篇文章主要介紹了Java分治法與二分搜索算法,簡(jiǎn)單講述了分治法與二分搜索算法的原理并結(jié)合java實(shí)例分析了二分搜索算法的實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下

本文實(shí)例講述了java分治法二分搜索算法。分享給大家供大家參考,具體如下:

1、分治法

分治法的基本思想是將一個(gè)規(guī)模為n的問(wèn)題分解為k個(gè)規(guī)模較小的子問(wèn)題,這些子問(wèn)題相互獨(dú)立且與原問(wèn)題相同。遞歸的解這些子問(wèn)題,然后將各子問(wèn)題的解合并得到原問(wèn)題的解。

分治法所能解決的問(wèn)題一般具有以下幾個(gè)特征:

  1) 該問(wèn)題的規(guī)模縮小到一定的程度就可以容易地解決
  2) 該問(wèn)題可以分解為若干個(gè)規(guī)模較小的相同問(wèn)題,即該問(wèn)題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。
  3) 利用該問(wèn)題分解出的子問(wèn)題的解可以合并為該問(wèn)題的解;
  4) 該問(wèn)題所分解出的各個(gè)子問(wèn)題是相互獨(dú)立的,即子問(wèn)題之間不包含公共的子子問(wèn)題。

分治法的基本步驟:

分治法在每一層遞歸上都有三個(gè)步驟:

  分解:將原問(wèn)題分解為若干個(gè)規(guī)模較小,相互獨(dú)立,與原問(wèn)題形式相同的子問(wèn)題;
  解決:若子問(wèn)題規(guī)模較小而容易被解決則直接解,否則遞歸地解各個(gè)子問(wèn)題;
  合并:將各個(gè)子問(wèn)題的解合并為原問(wèn)題的解。

它的一般的算法設(shè)計(jì)模式如下:

?
1
2
3
4
5
6
7
8
divide-and-conquer(p)
if |p|≤n0
then return(adhoc(p))
//將p分解為較小的子問(wèn)題 p1 ,p2 ,...,pk
for i←1 to k
do yi ← divide-and-conquer(pi) △ 遞歸解決pi
t ← merge(y1,y2,...,yk) △ 合并子問(wèn)題
return(t)

其中|p|表示問(wèn)題p的規(guī)模;n0為一閾值,表示當(dāng)問(wèn)題p的規(guī)模不超過(guò)n0時(shí),問(wèn)題已容易直接解出,不必再繼續(xù)分解。adhoc(p)是該分治法中的基本子算法,用于直接解小規(guī)模的問(wèn)題p。因此,當(dāng)p的規(guī)模不超過(guò)n0時(shí)直接用算法adhoc(p)求解。算法merge(y1,y2,...,yk)是該分治法中的合并子算法,用于將p的子問(wèn)題p1,p2 ,...,pk的相應(yīng)的解y1,y2,...,yk合并為p的解。

子問(wèn)題的劃分:人們從大量實(shí)踐中發(fā)現(xiàn),在用分治法設(shè)計(jì)算法時(shí),最好使子問(wèn)題的規(guī)模大致相同。換句話說(shuō),將一個(gè)問(wèn)題分成大小相等的k個(gè)子問(wèn)題的處理方法是行之有效的。許多問(wèn)題可以取 k = 2。這種使子問(wèn)題規(guī)模大致相等的做法是出自一種平衡(balancing)子問(wèn)題的思想,它幾乎總是比子問(wèn)題規(guī)模不等的做法要好。

2、二分搜索

大部分程序員應(yīng)該都知道二分搜索的大致原理,這里不再贅述。需要說(shuō)明的是二分搜索是所有以比較為基礎(chǔ)的搜索算法時(shí)間復(fù)雜度最低的算法。用二叉樹(shù)描速二分查找算法,最壞情況下與二叉樹(shù)的最高階相同。比較二叉樹(shù)線性查找也可用二叉樹(shù)表示,最壞情況下比較次數(shù)為數(shù)組元素?cái)?shù)量。任何一種以比較為基礎(chǔ)的搜索算法,其最壞情況所用時(shí)間不可能低于o(logn)。

Java分治法與二分搜索算法實(shí)例分析

Java分治法與二分搜索算法實(shí)例分析

二分搜索程序清單如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.scanner;
public class binarysearch {
  public static int binarysearch (int[] a,int x,int n) {
    int left = 0;
    int right = n - 1;
    while(left <= right) {
      int middle = (left + right) / 2;
      if(x == a[middle]) return middle;
      if(x >= a[middle]) left = middle + 1;
      else right = middle - 1;
    }
    return -1;
  }
  public static void main(string args[]) {
    system.out.println("服務(wù)器之家測(cè)試結(jié)果:");
    int[] a = new int[10];
    for(int i = 0; i < a.length; i++) {
      a[i] = i+1;
      system.out.print(a[i] + " ");
    }
    system.out.println();
    system.out.println("請(qǐng)輸入你要查詢(xún)的數(shù):");
    scanner sc = new scanner(system.in);
    int b = sc.nextint();
    int num = binarysearch(a, b, a.length) + 1;
    system.out.println("要查找的數(shù)在第" + num + "個(gè)位置");
  }
}

運(yùn)行結(jié)果:

Java分治法與二分搜索算法實(shí)例分析

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

原文鏈接:http://blog.csdn.net/u014755255/article/details/50193463

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲 色 欧美 爱 视频 日韩 | 男生同性视频twink在线 | 国产大片51精品免费观看 | 日韩一区二区三区免费 | 91制片厂制作传媒免费版樱花 | 欧美四虎影院 | 视频在线观看国产 | 成人猫咪maomiav永久网址 | 热99精品在线 | 免费观看欧美成人h | 99九九国产精品免费视频 | 青青网站| 国产欧美久久久精品影院 | 国产成人高清视频 | 韩国伊人 | 亚洲第一男人天堂 | 午夜影院免费体验 | 日本精品一卡二卡≡卡四卡 | 日本中文字幕在线视频 | 女仆色在线观看 | 青青网站 | 热剧库| 无限资源在线观看完整版免费下载 | 红杏网| 欧美一区二区三区四区视频 | 午夜一级影院 | 国产婷婷高清在线观看免费 | 久久草福利自拍视频在线观看 | 国产区久久 | 国内精品一区二区在线观看 | 亚洲AV福利天堂一区二区三 | 亚洲精品成人A8198A片漫画 | 鬼吹灯之天星术免费观看 | 日本一区二区免费在线 | 99人中文字幕亚洲区 | 日韩在线观看一区二区不卡视频 | 美女被灌浣肠失禁视频 | 久久九九亚洲精品 | 欧美肥乳| 精品国产国产综合精品 | 日本-区二区三区免费精品 日本破处 |