ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>九色一区二区,亚洲视频在线观看日本a,亚洲伦伦在线http://www.aygfsteel.com/flyingis/category/6808.htmlTalking and thinking freely !<br> Flying in the world of Java and GIS !zh-cnTue, 27 Feb 2007 08:42:18 GMTTue, 27 Feb 2007 08:42:18 GMT60基本数据¾l“构的Java实现http://www.aygfsteel.com/flyingis/archive/2006/02/05/29646.htmlFlyingisFlyingisSun, 05 Feb 2006 15:08:00 GMThttp://www.aygfsteel.com/flyingis/archive/2006/02/05/29646.htmlhttp://www.aygfsteel.com/flyingis/comments/29646.htmlhttp://www.aygfsteel.com/flyingis/archive/2006/02/05/29646.html#Feedback1http://www.aygfsteel.com/flyingis/comments/commentRss/29646.htmlhttp://www.aygfsteel.com/flyingis/services/trackbacks/29646.html链表

class Node {

Object item; Node next;

  Node (Object v) {

item = v; next = null;

}

}

头指针,½Iºå°¾æŒ‡é’ˆ

初始化:(x¨¬)head = null;

åœ?/SPAN>x后插å…?/SPAN>tåQ?/SPAN>

if ( x == null)

{ head = t; head.next = null; }

else { t.next = x.next; x.next = t; }

¿U»èµ°x之后的结点:(x¨¬)t = x.next; x.next = t.next;

循环遍历åQ?/SPAN>for ( t = head; t != null; t = t.next )

‹‚€(g¨¨)æŸ¥é“¾è¡¨æ˜¯å¦äØ“(f¨´)½Iºï¼š(x¨¬)if ( head == null )

½Iºå¤´¾l“点åQŒç©ºž®¾æŒ‡é’?/SPAN>

初始化:(x¨¬)head = new Node(); head.next = null;

åœ?/SPAN>x后插å…?/SPAN>tåQ?/SPAN>t.next = x.next; x.next = t;

¿U»èµ°x之后的结点:(x¨¬)t = x.next; x.next = t.next;

循环遍历åQ?/SPAN>for ( t = head.next; t != null; t = t.next )

‹‚€(g¨¨)æŸ¥é“¾è¡¨æ˜¯å¦äØ“(f¨´)½Iºï¼š(x¨¬)if ( head.next == null )

½Iºå¤´¾l“点åQŒç©ºž®„¡»“ç‚?/SPAN>

初始化:(x¨¬)head = new Node(); z = new Node(); head.next = z; z.next = z;

åœ?/SPAN>x后插å…?/SPAN>tåQ?/SPAN>t.next = x.next; x.next = t;

¿U»èµ°x之后的结点:(x¨¬)t = x.next; x.next = t.next;

循环遍历åQ?/SPAN>for ( t = head.next; t != z; t = t.next )

‹‚€(g¨¨)æŸ¥é“¾è¡¨æ˜¯å¦äØ“(f¨´)½Iºï¼š(x¨¬)if ( head.next == z )

循环链表

½W¬ä¸€‹Æ¡æ’入:(x¨¬)head.next = head;

åœ?/SPAN>x后插å…?/SPAN>tåQ?/SPAN>t.next = x.next; x.next = t;

¿U»èµ°x之后的结点:(x¨¬)t = x.next; x.next = t.next;

循环遍历åQ?/SPAN>t = head; do { t = t.next; } while ( t != head );

‹‚€(g¨¨)查是否只有一个数据项åQ?/SPAN>if ( head.next == head )

 

堆栈

数组实现

class Stack {

  private Object[] s;

  private int n;

  Stack ( int maxN ) {

    s = new Object[maxN]; n = 0;

}

boolean isEmpty() { return ( n == 0 ); }

void push ( Object item ) { s[n++] = item; }

Object pop() {

  Object t = s[--n]; s[n] = null; return t;

}

}

链表实现

class Stack {

  private Node head;

  private class Node {

Object item; Node next;

Node ( Object item, Node next ) {

  this.item = item; this.next = next;

}

}

Stack ( Object maxN ) { head = null; }

boolean isEmpty() { return ( head ==null ); }

void push ( Object item ) { head = new Node(item, head); }

Object pop() {

  Object v = head.item;

  Node t = head.next;

  head = t;

  return v;

}

}

 

FIFO队列的链表实�/SPAN>

class Queue {

  private class Node {

Object item; Node next;

Node ( Object item ) {

  this.item = item; this.next = null;

}

}

Private Node head, tail;

Queue ( Object max ) { head = null; tail = null; }

boolean isEmpty() { return ( head ==null ); }

void put ( Object item ) {

  Node t = tail;

  tail = new Node(item);

  if ( empty() )

    head = tail;

  else t.next = tail

}

Object get() {

  Object v = head.item;

  Node t = head.next;

  head = t;

  return v;

}

}



Flyingis 2006-02-05 23:08 发表评论
]]>
数据¾l“构中避免数据项的重å¤?/title><link>http://www.aygfsteel.com/flyingis/archive/2006/01/30/29361.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Sun, 29 Jan 2006 16:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/flyingis/archive/2006/01/30/29361.html</guid><wfw:comment>http://www.aygfsteel.com/flyingis/comments/29361.html</wfw:comment><comments>http://www.aygfsteel.com/flyingis/archive/2006/01/30/29361.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/flyingis/comments/commentRss/29361.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/flyingis/services/trackbacks/29361.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 6pt 0cm; TEXT-INDENT: 21.75pt; mso-para-margin-top: .5gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">抽象数据¾cÕdž‹</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">(ADT)</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一¿Uåªèƒ½é€šè¿‡æŽ¥å£è®‰K—®çš„æ•°æ®ç±»åž‹ï¼Œå®ƒæ˜¯å­—段与基于字ŒD늚„操作所构成的集合。这里的接口不是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">interface</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">åQŒè€Œæ˜¯è®‰K—®æ•°æ®çš„途径åQŒæŽ¥å£æŠŠæ•°æ®çš„表½Cºå’Œæ“ä½œæ–ÒŽ(gu¨©)³•的实现完全分¼›Õd¼€æ¥ã€‚两¿Uæœ€åŸºæœ¬çš?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是堆栈和队列åQŒåÆˆä¸”æ ¹æ®æˆ‘ä»¬çš„éœ€è¦ï¼Œå¯ä»¥æž„å¾æ›´äØ“(f¨´)复杂çš?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">åQŒä¾‹å¦‚可以对数据™å¹è¿›è¡Œè®¡æ•ŽÍ¼Œ‹‚€(g¨¨)查数据项是否存在重复½{‰ç­‰ã€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 6pt 0cm; TEXT-INDENT: 21.75pt; mso-para-margin-top: .5gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在很多实际应用中åQŒæˆ‘们都不允许存在数据项重复的情况,需要对用户提交的重复数据进行合适的处理。让用户保证不提交重复的数据可以避免˜q™ç§æƒ…况的发生,但显然这¿Uæ–¹æ³•åÆˆä¸å®žé™…ï¼Œæ—¢ç„¶ä½¿ç”¨</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">ž®±æ˜¯ä¸ÞZº†(ji¨£n)¾l™ä‹É用它的程序员提供½Ž€å•明äº?ji¨£n)的数据¾cÕdž‹è§£å†³æ–ÒŽ(gu¨©)¡ˆåQŒé‚£ä¹ˆæˆ‘们就应该åœ?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中来解决˜q™ä¸ªé—®é¢˜ã€‚以队列ä¸ÞZ¾‹åQŒä¸€èˆ¬å¯ä»¥é€šè¿‡ä¸¤ç§½{–略来处理这个问题:(x¨¬)</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 6pt 0cm 6pt 18pt; TEXT-INDENT: -18pt; mso-para-margin-top: .5gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">        </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">攑ּƒæ–°è¾“入的数据™å¹ï¼š(x¨¬)当最新放入队列中的数据项已经在队列中æ—Óž¼Œæ”‘Ö¼ƒå½“前输入的数据项ã€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 6pt 0cm 6pt 18pt; TEXT-INDENT: -18pt; mso-para-margin-top: .5gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 18.0pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">        </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">攑ּƒæ—§çš„æ•°æ®™å¹ï¼Œä¿å­˜æ–°è¾“入的数据™å¹ï¼š(x¨¬)当最新放入队列中的数据项已经在队列中æ—Óž¼Œæ”‘Ö¼ƒå·²ç»å­˜åœ¨äºŽé˜Ÿåˆ—中的数据项åQŒä¿å­˜å½“前放入的数据™åV€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">    对于½W¬ä¸€¿Uå¤„理方式,在一¿Uç‰¹ŒDŠçš„æƒ…况下,数据™å¹å­˜å‚¨çš„æ•°æ®æ˜?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">0~N-1</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">之间的整敎ͼŒé‚£ä¹ˆå¯ä»¥é€šè¿‡å¢žåŠ ä¸€ä¸ªæ–°çš„æ•°¾l?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">a[i]</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">或链表来储存</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">boolean</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">¾cÕdž‹æ•°æ®åQŒå½“队列中第</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">i</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">个位¾|®ä¸Šå·²ç»å­˜åœ¨æ•°æ®</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">i</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">æ—?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">(i<=N-1)</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">åQŒè®¾¾|?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">a[i]=boolean</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">åQŒé‚£ä¹ˆå¯ä»¥é€šè¿‡</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">a[i]</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">来判断数æ?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">i</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">是否已经存在于队列中。第二种处理方式比第一¿Uæ›´ä¸ºå¤æ‚一些,如果有必要,˜q˜å¯ä»¥è®©ç”¨æˆ·åŽ»é€‰æ‹©é‡‡å–å“ªç§½{–略来避免重复的数据™åV€‚ä½†ä¸ç®¡æ€Žä¹ˆæ øP¼Œæˆ‘们可以通过构徏不同¾cÕdž‹çš?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">åQŒåƈåœ?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中实现某些我们所需要的功能åQŒå°†èƒ½æžå¤§é™åº¦åœ°ä¿è¯æ•°æ®¾l“构和算法的灉|´»æ€§ä¸Žæ¸…晰的结构,使基äº?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: å®?hu¨¤)ä½? mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ADT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">的实现能满èƒö各种不同的具体应用,òq¶æ–¹ä¾¿ç±»çš„重构ã€?/SPAN><img src ="http://www.aygfsteel.com/flyingis/aggbug/29361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/flyingis/" target="_blank">Flyingis</a> 2006-01-30 00:34 <a href="http://www.aygfsteel.com/flyingis/archive/2006/01/30/29361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>理解数组和链表的最基本ç‰ÒŽ(gu¨©)€?/title><link>http://www.aygfsteel.com/flyingis/archive/2006/01/24/29150.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Tue, 24 Jan 2006 15:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/flyingis/archive/2006/01/24/29150.html</guid><wfw:comment>http://www.aygfsteel.com/flyingis/comments/29150.html</wfw:comment><comments>http://www.aygfsteel.com/flyingis/archive/2006/01/24/29150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/flyingis/comments/commentRss/29150.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/flyingis/services/trackbacks/29150.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作者:(x¨¬)</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy"><A href="/flyingis/" target=_blank><SPAN style="COLOR: navy">Flyingis</SPAN></A></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组和链表是数据¾l“构中老生常谈的问题,在指针或是引用这些概念出来之前,数组ž®Þpƒ½ç”¨æ¥å®žçŽ°é“¾è¡¨çš„åŠŸèƒ½ã€‚è¿™é‡Œæ‰€è¯´çš„é“¾è¡¨æŒ‡çš„ž®±æ˜¯ç”¨æŒ‡é’ˆæˆ–对象的引用来设计的链表ã€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在实际的应用开发中åQŒæ•°¾l„由于它天生的种¿Uç‰¹æ€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">(</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参è€?A href="/flyingis/archive/2005/12/15/24089.html" target=_blank><FONT color=#000080>ã€?/FONT></A></SPAN><A href="/flyingis/archive/2005/12/15/24089.html"><FONT color=#000080><SPAN lang=EN-US style="FONT-SIZE: 10pt">Java</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器分析</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">â€?/SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组ã€?/SPAN></FONT></A><SPAN lang=EN-US style="FONT-SIZE: 10pt">)</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">åQŒæ›´å¤šçš„ä¼?x¨¬)被开发äh员所惛_ˆ°ç”¨åˆ°åQŒä½†æ‰€æœ‰çš„æ•°æ®¾l“构都有它特定的适用场合。众所周知åQŒæ•°¾l„和链表最大的区别在于åQŒä‹É用数¾l„能够快速访问数¾l„中的每个元素,而ä‹É用链表可以方便的操纵每个数据™åV€‚下面通过两个很有­‘£çš„例子说明äº?ji¨£n)它们各自的区别与优åŠÑ€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虽然åœ?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">JDK</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">ä¸?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">Java</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供äº?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">List</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口å?qi¨¢ng)其接口的实ç?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">(ArrayList/LinkedList)</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">寚w“¾è¡¨æ•°æ®ç»“构提供了(ji¨£n)有力的支持,具体可以参è€?A href="/flyingis/archive/2005/12/21/24951.html" target=_blank><FONT color=#000080>ã€?/FONT></A></SPAN><A href="/flyingis/archive/2005/12/21/24951.html"><FONT color=#000080><SPAN lang=EN-US style="FONT-SIZE: 10pt">Java</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器分析</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">—Listå’ŒSet</SPAN></FONT></A><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><A href="/flyingis/archive/2005/12/21/24951.html"><FONT color=#000080>ã€?/FONT></A>但下面数学上关于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">Josephus</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">问题的实çŽîC»…使用äº?ji¨£n)自定义的最½Ž€å•的链表¾l“æž„ã€?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">/**<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes"> </SPAN>* </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">æ ÒŽ(gu¨©)®å‘½ä×o(h¨´)行输入的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">N</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">å€û|¼Œè®¡ç®—出所有小äº?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">N</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的素æ•?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes"> </SPAN>* </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">æ˜¯ç´ æ•°å°†æ•°ç»„å…ƒç´ å€ÆD®¾ä¸?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">true</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">åQŒå¦åˆ™è®¾ä¸?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">false<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes"> </SPAN>*/<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">class ArrayApp {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>public static void main(String[] args) {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">int N = Integer.parseInt(args[0]);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">boolean[] a = new boolean[N];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">for (int i = 2; i < N; i++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>a[i] = true;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">for (int i = 2; i < N; i++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>if (a[i] != false)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">    </SPAN>for (int j = i; j*i < N; j++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">      </SPAN>a[i*j] = false;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">for (int i = 2; i < N; j++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>if (a[i])<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">    </SPAN>System.out.println(“â€?+ i);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">/**<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes"> </SPAN>* N</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个有¾~–号的小球围成一圈,每个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">M-1</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个就拿去一个小球,计算最后剩下的球的位置</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes"> </SPAN>*/<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">class LinkApp {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>static class Node {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">int value;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">Node next;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">Node (int v) { v = value; }<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">public static void main(String[] args) {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>int N = Integer.parseInt(args[0]);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>int M = Integer.parseInt(args[1]);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>Node first = new Node(1);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>Node x = first;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>for (int i = 2; i <= N; i++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">    </SPAN>x = (x.next = new Node(i));<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>x.next = first;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">  </SPAN>while (x != x.next) {<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">    </SPAN>for (int i = 1; i < M; i++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">      </SPAN>x = x.next;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">    </SPAN>x.next = x.next.next;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">System.out.println(â€?/SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后剩下的ž®çƒåQ?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt">â€?+ x.value);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt">}<o:p></o:p></SPAN></P><img src ="http://www.aygfsteel.com/flyingis/aggbug/29150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/flyingis/" target="_blank">Flyingis</a> 2006-01-24 23:42 <a href="http://www.aygfsteel.com/flyingis/archive/2006/01/24/29150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>½Ž—法分析规则http://www.aygfsteel.com/flyingis/archive/2006/01/22/28908.htmlFlyingisFlyingisSat, 21 Jan 2006 16:34:00 GMThttp://www.aygfsteel.com/flyingis/archive/2006/01/22/28908.htmlhttp://www.aygfsteel.com/flyingis/comments/28908.htmlhttp://www.aygfsteel.com/flyingis/archive/2006/01/22/28908.html#Feedback9http://www.aygfsteel.com/flyingis/comments/commentRss/28908.htmlhttp://www.aygfsteel.com/flyingis/services/trackbacks/28908.html作者:(x¨¬)Flyingis

    ½Ž—æ³•ä½œäØ“(f¨´)实现计算机程序实现时解决问题的方法,在计½Ž—机应用领域发挥着举èƒö轻重的作用。它研究的内å®ÒŽ(gu¨©)˜¯è§£å†³é—®é¢˜çš„æ–¹æ³•,而不是计½Ž—机½E‹åºçš„æœ¬íw«ã€‚一个优¿U€çš„算法可以运行在比较慢的计算æœÞZ¸ŠåQŒä½†ä¸€ä¸ªåŠ£è´¨çš„½Ž—法在一台性能很强的计½Ž—机上也不一定能满èƒö应用的需要,因此åQŒåœ¨è®¡ç®—机程序设计中åQŒç®—法设计往往处于核心(j¨©)åœîC½ã€‚如何去设计一个适合特定应用的优¿U€½Ž—法是众多开发äh员所å…Ïx(ch¨®ng)³¨çš„焦点,在算法设计时åQŒéœ€è¦äº†(ji¨£n)解算法设计的规则ã€?/span>

要想充分理解½Ž—法òq¶æœ‰æ•ˆåœ°åº”用于实际问题,关键是对½Ž—法的分析。通常我们可以利用实验å¯ÒŽ(gu¨©)¯”分析、数学方法来分析½Ž—法。实验对比分析很½Ž€å•,两个½Ž—æ³•ç›æ€º’比较åQŒå®ƒä»¬éƒ½èƒ½è§£å†›_Œä¸€é—®é¢˜åQŒåœ¨ç›¸åŒçŽ¯å¢ƒä¸‹ï¼Œå“ªä¸ª½Ž—法的速度快我们一般就ä¼?x¨¬)è®¤ä¸ø™¿™ä¸ªç®—法性能更好。数学方法能ž®†ç®—æ³•åˆ†æžçš„æ›´äØ“(f¨´)¾l†è‡´åQŒèƒ½åœ¨ä¸¥å¯†çš„逻辑推理基础上判断算法的优劣åQŒä½†åœ¨å®Œæˆå®žé™…项目过½E‹ä¸­åQŒæˆ‘们很多时候都不能åŽÕdš˜q™ç§ä¸¥å¯†çš„论证与推断åQŒå› ä¸ºæˆ‘们不是在完成一道数学难题,也不是数学领域的专家åQŒå°†å¤§é‡çš„æ—¶é—´èŠ±è´¹åœ¨å…¬å¼çš„è®¡½Ž—与证明上会(x¨¬)坯D‡´æ•´ä¸ª™å¹ç›®˜q›åº¦¾~“慢、成本过高,因此åQŒåœ¨½Ž—æ³•è®¾è®¡ä¸­ï¼Œæˆ‘ä»¬å¾€å¾€é‡‡ç”¨èƒ½è¿‘ä¼ÆD¡¨è¾¾æ€§èƒ½çš„æ–¹æ³•来展示某个½Ž—法的性能指标。例如,计算机对n2å’?/span>n2+2n的响应速度åQŒå½“n比较大的时候几乎一æ äh²¡ä»€ä¹ˆåŒºåˆ«ï¼Œæˆ‘ä»¬ä¾¿å¯ç›´æŽ¥è®¤äØ“(f¨´)åŽè€…ç®—æ³•çš„å¤æ‚åº¦äØ“(f¨´)n2。在分析½Ž—法æ—Óž¼Œéšè—¾l†èŠ‚çš„æ•°å­¦è¡¨½Cºæ³•æˆäØ“(f¨´)大O记法åQŒå®ƒå¯ä»¥å¸®åŠ©æˆ‘ä»¬½Ž€åŒ–算法复杂度的许多细节,提取主要成分åQŒè¿™å’Œé¥æ„Ÿå›¾åƒå¤„理中的主成分分析思想相近ã€?/span>

åŸÞZºŽ½Ž—法复杂度简化表辄¡š„思想基础上,我们通常ä¼?x¨¬)对½Ž—法˜q›è¡Œæœ€åæƒ…况分析和òq›_‡æƒ…况分析。对于一个给定的½Ž—法åQŒå¦‚果能保证它的最坏情况下的性能依然不错当然很好åQŒä½†æ˜¯åœ¨æŸäº›æƒ…况下,½E‹åºçš„æœ€åæƒ…å†ëŠ®—法的˜qè¡Œæ—‰™—´å’Œå®žé™…情å†ëŠš„˜qè¡Œæ—‰™—´ç›¸å·®å¾ˆå¤§åQŒåœ¨å®žé™…应用中我们几乎不ä¼?x¨¬)碰到最坏情况下的输入,那么此时˜q›è¡Œæœ€åæƒ…况分析显得有些画蛇添­‘»I¼Œç‰¹åˆ«æ˜¯åˆ†æžæœ€åæƒ…å†ëŠ®—法会(x¨¬)èŠÞp´¹å¤§é‡¾_‘ÖŠ›çš„æ—¶å€™ã€‚算法的òq›_‡æƒ…况分析可以帮助我们估计½E‹åºçš„æ€§èƒ½åQŒä½œä¸ºç®—法分析的基本指标之一åQŒä½†æ˜¯åã^均情况和实际情况仍然ä¼?x¨¬)有相差很大的时候,˜q™æ—¶æˆ‘们便可以ä‹É用随机法来尽量模拟现实中的情况,˜q™æ ·å¯ä»¥å¾—到在严格的概率意义上的预测˜qè¡Œæ—‰™—´ã€‚另外,对于一个经典算法,我们没有必要再去对该½Ž—法˜q›è¡Œæ”¹è¿›åQŒç ”½I¶å®ƒçš„上界和下界åQŒåªéœ€è¦äº†(ji¨£n)解该½Ž—法的特性,然后在合适的时候ä‹É用它ã€?/span>

最后,当一个程序变快和变慢åQŒè®©è®¡ç®—机反映出来的旉™—´å·®å‡ ä¹Žä¸ä¼?x¨¬)让äºÞZñ”生感觉的时候,我们也没有必要去改进˜q™ä¸ª½Ž—法åQŒä¾‹å¦‚程序进è¡?/span>1000‹Æ¡åó@环花è´?/span>0.001¿U’ï¼Œæ”¹è¿›åŽäØ“(f¨´)0.1¿U’,在实际应用中通常也只需要几千次循环åQŒæ­¤æ—¶æˆ‘们就没有必要去花旉™—´æ¥ç ”½I¶è¿™ä¸ªç®—法了(ji¨£n)åQŒåªè¦è¯¥½Ž—法能正¼‹®å®Œæˆä“Q务即可ã€?/span>



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ³¯ÑôÊÐ| ÍÅ·çÏØ| µÂ°²ÏØ| ɳºÓÊÐ| ³Â°Í¶û»¢Æì| ÁÙ°²ÊÐ| ÄϲýÊÐ| ¤ÄÏÊÐ| ¿ªÂ³ÏØ| ·½³ÇÏØ| ²¼¶û½òÏØ| ÁÙëÔÏØ| ÓÀ¸£ÏØ| ÄþÉÂÏØ| ̨¶«ÏØ| ÕżҿÚÊÐ| º½¿Õ| ̨ÄÏÊÐ| µÂ¸ñÏØ| ÒÍÁ¼ÏØ| ºâÑôÏØ| ÕØÖÝÏØ| ÁÖ¿ÚÏØ| ÊÖÓÎ| ÄôÈÙÏØ| DZ½­ÊÐ| ¾²º£ÏØ| ÍòÊ¢Çø| ´óÌïÏØ| °²¿µÊÐ| çõ´ºÊÐ| ʯÖù| À¥É½ÊÐ| ÐÏÌ¨ÏØ| áÓãôÏØ| Ä«Öñ¹¤¿¨ÏØ| Ñô¹ÈÏØ| Áúʤ| ºìÇÅÇø| ÈéɽÊÐ| ÈÄÆ½ÏØ|