Êý¾Ý½á¹¹(Java°æ)-ϰÌâ½â´ðÓëʵÑéÖ¸µ¼ ÏÂÔØ±¾ÎÄ

µÚ5Õ Êý×éºÍ¹ãÒå±í

Ä¿µÄ£ºÏßÐԽṹµ½·ÇÏßÐԽṹµÄ¹ý¶É£¬Á˽â°üº¬×ӽṹµÄÏßÐԽṹ£¬

Àí½âÁ´Ê½´æ´¢½á¹¹ÔÚ±í´ï·ÇÏßÐÔÊý¾Ý½á¹¹ÖеÄ×÷Óá£Àí½âÊý¾ÝѹËõ´æ´¢ºóµÄÔËËãʵÏÖ¡£

ÄÚÈÝ£ºÊ¹ÓöþάÊý×é±íʾ¾ØÕó¼°ÔËË㣻Èý½Ç¾ØÕ󡢶ԳƾØÕó¡¢Ï¡Êè¾Ø

ÕóµÈ¸÷ÖÖѹËõ´æ´¢·½·¨ÊµÏÖ¾ØÕóÔËË㣻¹ãÒå±íµÄ¸ÅÄ˫Á´±íʾºÍʵÏÖ¡£

ÒªÇó£ºÀí½â¶àάÊý×éµÄ´æ´¢½á¹¹£»ÊìÏ¤ÌØÊâ¾ØÕóµÄѹËõ´æ´¢·½·¨£»ÕÆ

ÎÕÏ¡Êè¾ØÕóÈýÔª×é´Ó˳Ðò±í¡¢Ðеĵ¥Á´±íµ½Ê®×ÖÁ´±íµÈµ½¶àÖÖ´æ´¢½á¹¹µÄÑݱä¹ý³Ì£»Àí½â¹ãÒå±íµÄ¸ÅÄÊìϤ¹ãÒå±íµÄ´æ´¢½á¹¹¡£

ÖØµã£ºÌÖÂÛ¶àÖÖÓÉ˳Ðò´æ´¢½á¹¹ºÍÁ´Ê½´æ´¢½á¹¹Óлú½áºÏµÄ´æ´¢½á

¹¹£¬ÒÔ¾ØÕóΪÀý£¬Ñо¿ÔÚÏàͬµÄÂß¼­½á¹¹£¨¾ØÕ󣩺ͲÙ×÷ÒªÇ󣨾ØÕóÔËË㣩Çé¿öÏ£¬¸ù¾Ý¸÷ÖÖ¾ØÕóµÄ²»Í¬ÌØÐÔ£¬²ÉÓöàÖÖ´æ´¢½á¹¹ÊµÏÖ¾ØÕóÔËËã¡£

Äѵ㣺ϡÊè¾ØÕóµÄ¶àÖÖ´æ´¢ºÍʵÏÖ¡£ ʵÑé£ºÌØÊâ¾ØÕóµÄ´æ´¢ºÍÔËËã¡£

5.1 Êý×é

5-1 Êý×éÓÐÊ²Ã´ÌØµã£¿¡°Êý¾Ý½á¹¹¡±¿Î³ÌÖÐΪʲôҪÑо¿Êý×飿

¡¾´ð¡¿Ôڸ߼¶³ÌÐòÉè¼ÆÓïÑÔÖУ¬Êý×éÊÇÒ»ÖÖÊý¾ÝÀàÐÍ¡£Êý×éÊÇÏßÐԽṹ¼°ÆäËûÊý¾Ý½á¹¹ÊµÏÖ˳Ðò´æ´¢½á¹¹µÄ»ù´¡¡£

ÔÚÊý¾Ý½á¹¹ÖУ¬Êý×éÊÇÒ»ÖÖ³£ÓõÄÊý¾Ý½á¹¹¡£Ò»Î¬Êý×é¿ÉÒÔ¿´³ÉÒ»¸ö˳Ðò´æ´¢½á¹¹µÄÏßÐÔ±í£¬¶þάÊý×鶨ÒåΪ¡°ÆäÊý¾ÝÔªËØÎªÒ»Î¬Êý×顱µÄÏßÐÔ±í¡£¾ØÕóͨ³£²ÉÓöþάÊý×é´æ´¢£¬µ«¶ÔÌØÊâ¾ØÕóºÍÏ¡Êè¾ØÕó¿É²ÉÓÃÒ»Ð©ÌØÊâ·½·¨½øÐÐѹËõ´æ´¢¡£

5-2 ʲôÊÇËæ»ú´æÈ¡½á¹¹£¿ÎªÊ²Ã´ËµÒ»Î¬Êý×éÊÇÒ»ÖÖËæ»ú´æÈ¡½á¹¹£¿

¡¾´ð¡¿Ëæ»ú´æÈ¡½á¹¹Ö¸¶Áдһ¸öÔªËØµÄʱ¼ä¸´ÔÓ¶ÈÊÇO(1)¡£Ò»Î¬Êý×éµÄÿ¸öÔªËØµØÖ·ÊÇÆäϱêµÄÏßÐÔº¯ÊýLoc(a)?Loc(a)?i?c£¬¼ÆËãµØÖ·µÄʱ

i0- 43 -

¼ä¸´ÔÓ¶ÈÊÇO(1)£¬Òò´ËһάÊý×éÊÇÒ»ÖÖËæ»ú´æ´¢½á¹¹¡£

5-3 ¶þάÊý×éÓÐÄÄЩ´æ´¢½á¹¹£¿ÓÐʲô²»Í¬Ìص㣿¶¼ÊÇËæ»ú´æÈ¡½á¹¹Âð£¿

¡¾´ð¡¿Ë³Ðò¶þάÊý×éºÍ¶¯Ì¬¶þάÊý×éµÄ´æ´¢½á¹¹²»Í¬¡£

¢Ù ˳Ðò¶þάÊý×éµÄËùÓÐÔªËØÁ¬Ðø´æ´¢£¬ÓÐÐÐÖ÷Ðò»òÁÐÖ÷ÐòÁ½ÖÖ´æ´¢´ÎÐò£¬´æ´¢½á¹¹¼û½Ì²Äͼ5.2¡£Ã¿¸öÔªËØai,jµÄµØÖ·ÊÇϱêi¡¢jµÄÏßÐÔº¯Êý£¬µØÖ·¼ÆË㹫ʽÈçÏ£¬Éè¶þάÊý×éÓÐmÐÐnÁУ¬Ã¿ÔªËØÕ¼c¸ö×Ö½Ú¡£

Loc(a)?Loc(a)?(i?n?j)?c£¨ÐÐÖ÷Ðò£© Loc(a)?Loc(a)?(j?m?i)?c£¨ÁÐÖ÷Ðò£©

ÎÞÂÛÐÐÖ÷Ðò»òÁÐÖ÷Ðò£¬¼ÆËãÔªËØµØÖ·»¨·ÑµÄʱ¼ä¶¼ÊÇO(1)£¬¶¼ÊÇËæ»ú´æÈ¡½á¹¹¡£

¢Ú ¶¯Ì¬¶þάÊý×é°üº¬¶à¸ö·ÖÉ¢´æ´¢µÄһάÊý×飬¼û½Ì²Äͼ5.3£¬¼ÆËãÔªËØµØÖ·ÊÇÁ½¸öÏßÐÔ¹ØÏµ£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(1)£¬Òò´Ë£¬¶þάÊý×é¶¼ÊÇËæ»ú´æÈ¡½á¹¹¡£

i,j0,0i,j0,05.2 ÌØÊâ¾ØÕóµÄѹËõ´æ´¢

5.2.1 Èý½Ç¾ØÕ󡢶ԳƾØÕóºÍ¶Ô½Ç¾ØÕóµÄѹËõ´æ´¢

ϰ5-5²ÉÓöþάÊý×é´æ´¢¾ØÕóÊÇ·ñ¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ£¿ÓÐÄÄЩ¾ØÕóÐèҪѹËõ´æ´¢£¿ÎªÊ²Ã´ÒªÑ¹Ëõ£¿¸÷²ÉÓÃÔõÑùµÄѹËõ´æ´¢·½Ê½£¿¸÷ÖÖѹËõ´æ´¢·½Ê½ÊÇ·ñ¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ£¿

¡¾´ð¡¿ÎÞÂÛ¾²Ì¬´æ´¢»ò¶¯Ì¬´æ´¢µÄ¶þάÊý×é¶¼ÊÇËæ»ú´æÈ¡½á¹¹£¬¼´´æ»òȡһ¸öÔªËØµÄʱ¼ä¸´ÔÓ¶ÈÊÇO(1)£¬Òò´Ë£¬²ÉÓöþάÊý×é´æ´¢¾ØÕó¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ¡£

µ±¾ØÕó½×Êý½Ï´óÇÒ¾ØÕóÖÐÓкܶàÁãÔªËØ»ò²¿·Ö·ÇÁãÔªËØ¾ßÓÐijÖÖ·Ö²¼¹æÂÉʱ£¬ÐèÒª½«¾ØÕóѹËõ´æ´¢£¬¼´Ê¹ÓýÏÉٵĴ洢¿Õ¼ä´æ´¢¾ØÕóÔªËØ¡£ÐèҪѹËõ´æ´¢µÄ¾ØÕóÓжԳƾØÕó¡¢Èý½Ç¾ØÕó¡¢Ï¡Êè¾ØÕóµÈ£¬Ñ¹Ëõ´æ´¢µÄÔ­ÔòÊÇ£ºÓйæÂɵÄÖØ¸´ÔªËØÖ»´æ´¢Ò»·Ý£»²»´æ´¢ÁãÔªËØ¡£²ÉÓÃѹËõ´æ´¢µÄ¾ØÕóÈÔÈ»Äܹ»ÕýÈ·µØ½øÐи÷ÖÖ¾ØÕóÔËËã¡£

¸ù¾Ý¾ØÕóµÄÌØµã²ÉÓò»Í¬µÄѹËõ´æ´¢·½Ê½£¬¸÷¾ØÕóµÄѹËõ´æ´¢½á¹¹Èçͼ5.1Ëùʾ¡£

¢Ù ÌØÊâ¾ØÕó£¬Èç¶Ô³Æ¾ØÕó¡¢Èý½Ç¾ØÕ󡢶ԽǾØÕóµÈ£¬½«ËùÓÐÔªËØ

- 44 -

Ó³Éä³ÉÒ»ÖÖÏßÐÔ¹ØÏµÑ¹Ëõ´æ´¢£¬»òÕß²ÉÓö¯Ì¬¶þάÊý×éÖ»´æ´¢°´¹æÂÉ·Ö²¼µÄ·ÇÁãÔªËØ¡£ÕâÁ½ÖÖѹËõ´æ´¢·½Ê½¶¼¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ¡£

¢Ú Ï¡Êè¾ØÕ󣬯ä·ÇÁãÔªËØºÜÉÙÇÒ·Ö²¼ÎÞ¹æÂÉ£¬½«Ã¿¸ö·ÇÁãÔªËØ±íʾ³ÉÒ»¸öÈýÔª×飨ÐкÅ,ÁкÅ,ÔªËØÖµ£©£¬Ï¡Êè¾ØÕóµÄѹËõ´æ´¢ÎÊÌâÔòת»¯ÎªÈýÔª×éÏßÐÔ±íµÄ´æ´¢ÎÊÌâ¡£ÓÐÈýÔª×é˳Ðò±í¡¢ÈýÔª×éµ¥Á´±í¡¢ÐУ¨ÁУ©µÄµ¥Á´±í¡¢Ê®×ÖÁ´±íµÈ´æ´¢½á¹¹£¬ÕâЩѹËõ´æ´¢½á¹¹¶¼²»¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ¡£

¾ØÕó¾ØÕó¶þάÊý×éÌØÊâ¾ØÕó£¨ÁãÔªËØ·Ö²¼¹æÂÉ¡¢²»´æ´¢·Ö²¼¹æÂɵÄÁãÔªËØ£© Èý½Ç¾ØÕó¶Ô³Æ¾ØÕó¶Ô½Ç¾ØÕó ÏßÐÔѹËõ´æ´¢·ÇÁãÔªËØÇøÓòһάÊý×éÈý½ÇÐεĶþάÊý×é

Ï¡Êè¾ØÕó£¨ÁãÔªËØ·Ö²¼²»¹æÂÉ¡¢²»´æ´¢ÁãÔªËØ£©Í¼5.1 ¾ØÕóµÄ´æ´¢½á¹¹·ÖÀà

5-1¡¿ÉÏÈý½Ç¾ØÕóµÄѹËõ´æ´¢Ô­ÔòÊÇÔõÑùµÄ£¿ÓÐÄÄЩѹ

Ëõ´æ´¢·½Ê½£¿»­³öʾÒâͼ£¬Ð´³öÔªËØµÄµØÖ·¼ÆË㹫ʽ¡£

n¸öÔªËØai,j£¨0¡¾´ð¡¿ÉèAn?[ai,j]ÊÇÒ»¸ön£¨n>0£©½×ÉÏÈý½Ç¾ØÕó£¬ÓÉn¡Á

¡Üi,jjʱ£¬ÓÐai,j£½0¡£

ÉÏÈý½Ç¾ØÕóµÄѹËõ´æ´¢Ô­ÔòÊÇ£¬Ö»´æ´¢Ö÷¶Ô½ÇÏß¼°ÒÔÉÏÈý½Ç²¿·ÖµÄ¾ØÕóÔªËØ¡£Á½ÖÖѹËõ´æ´¢½á¹¹Èçͼ5.2Ëùʾ£¬¶¼¾ßÓÐËæ»ú´æÈ¡ÌØÐÔ¡£

5-4 ¡¾Ë¼¿¼Ìâ

0a0,01a0,1??n-1a0,n-1na1,1??2n-1a1,n-1??i(2n-i+1)/2?i(2n-i-1)/2+j?ai,i?ai,j?i(2n-i-1)/2+n-1?n(n+1)/2-1ai,n-1?an-1,n-1 ÈýÔª×é˳Ðò±í£¨ÅÅÐò£©ÈýÔª×éµ¥Á´±í£¨ÅÅÐò£©ÈýÔª×éÐеĵ¥Á´±í£¨ÅÅÐò£©ÈýÔª×éÊ®×ÖÁ´±í£¨ÅÅÐò£© µÚ0ÐУ¬n¸öÔªËØ µÚ1ÐУ¬n-1¸öÔªËØ µÚiÐУ¬n-i¸öÔªËØ µÚn-1ÐУ¨a£©ÉÏÈý½Ç¾ØÕóµÄÐÐÖ÷ÐòÏßÐÔѹËõ´æ´¢int[][]element01ielement.length-1an-1,n-1£¨b£©ÉÏÈý½Ç¾ØÕóµÄÈý½ÇÐζþάÊý×éѹËõ´æ´¢int[]0a0,0a1,1?1a0,1??j?a1,n-1element[i].length-1a0,n-1element[i][j]0¡Üi¡Üj

ͼ5.2 ÉÏÈý½Ç¾ØÕóµÄѹËõ´æ´¢½á¹¹

- 45 -

£¨a£©ÏßÐÔѹËõ´æ´¢ÉÏÈý½Ç¾ØÕó

½«ÉÏÈý½Ç¾ØÕóÖ÷¶Ô½ÇÏß¼°ÆäÒÔÉÏÔªËØai,j£¬°´ÐÐÖ÷Ðò˳ÐòѹËõ³ÉÏßÐÔ´æ´¢½á¹¹£¬¸÷ÔªËØai,jµÄ´æ´¢µØÖ·ÈçÏ£¬´æ´¢ÔªËظöÊýΪn?(n?1)/2¡£

Loc(ai,j)?Loc(a0,0)?n?(n?1)???(n?i?1)?j?i?Loc(a0,0)?i?(2?n?i?1)?j20?i?j?n

¼ÆËã¸÷ÔªËØµØÖ·Ê±¼äΪO(1)£¬Òò´Ë£¬ÉÏÈý½Ç¾ØÕóÏßÐÔѹËõ´æ´¢½á¹¹ÊÇËæ»ú´æÈ¡½á¹¹¡£

£¨b£©Ê¹ÓÃÈý½ÇÐεĶþάÊý×éѹËõ´æ´¢ÉÏÈý½Ç¾ØÕó

ʹÓöþάÊý×é´æ´¢ÉÏÈý½Ç¾ØÕóÖ÷¶Ô½ÇÏß¼°ÆäÒÔÉÏÔªËØai,j£¬µÚiÐÐһάÊý×鳤¶ÈΪn-i¡£ai,j´æ´¢ÔÚmat[i][j-i]´¦£¬¼ÆËãµØÖ·Ê±¼äΪO(1)£¬Òò´Ë£¬´Ë´æ´¢½á¹¹Ò²ÊÇËæ»ú´æÈ¡½á¹¹¡£

5.2.2 Ï¡Êè¾ØÕóµÄѹËõ´æ´¢

1. Ï¡Êè¾ØÕóÈýÔª×é˳Ðò±í

²ÉÓÐÈýÔª×é˳Ðò±í´æ´¢µÄÏ¡Êè¾ØÕóÀàÉùÃ÷ÈçÏ£¬Ê¹ÓÃÅÅÐò˳Ðò±í¶ÔÏó×÷Ϊ³ÉÔ±±äÁ¿¡£

public class SeqMatrix //ÈýÔª×é˳Ðò´æ´¢µÄÏ¡Êè¾ØÕóÀà

{

int rows,columns; //¾ØÕóÐÐÊý¡¢ÁÐÊý SortedSeqList list; //ÅÅÐò˳Ðò±í£¬´æ´¢Ï¡Êè¾ØÕóÈýÔª×éÏßÐÔ±í

}

²ÉÓÃ˳Ðò±í´æ´¢Ï¡Êè¾ØÕó·ÇÁãÔªËØÈýÔª×éÏßÐÔ±í£¬±ØÐ뽫ÈýÔª×é°´ÔªËØÐÐÁдÎÐòÅÅÐò´æ´¢£¬ÎªÊä³ö¾ØÕóºÍÖ´ÐÐÏà¼ÓµÈ²Ù×÷Ìṩ¸ßЧÔËËãµÄ»ù´¡¡£Èç¹û²»ÅÅÐò£¬ÔòÊä³ö¾ØÕóºÍ¾ØÕóÏà¼ÓµÈÔËËãµÄЧÂʼ«µÍ£¬Ã¿»ñµÃÒ»¸öÔªËØÖµ¶¼ÒªÔÚ˳Ðò±íÖвéÕÒÖ¸¶¨ÐÐÁеÄÔªËØ£¬¼´Ê¹ÁãÔªËØÒ²ÔÚ²éÕÒ²»³É¹¦Ö®ºó²ÅÄÜÈ·¶¨£¬Ã¿´Î²éÕÒµÄʱ¼ä¸´ÔÓ¶ÈÊÇO(n)£¬nÊÇ·ÇÁãÔªËØ¸öÊý¡£

2. Ï¡Êè¾ØÕóÈýÔª×éÐеĵ¥Á´±í

¡¾Ë¼¿¼Ìâ5-2¡¿»­³öǰÊöÏ¡Êè¾ØÕóB5?6¼°A+=B·ÇÁãÔªËØÈýÔª×éÐеĵ¥Á´±í´æ´¢½á¹¹¡£

- 46 -

¢Ù ÒÔÏÂÏ¡Êè¾ØÕóB£¬Ðеĵ¥Á´±íÈçͼ5.3Ëùʾ£¬Î´»­µ¥Á´±íÍ·½áµã¡£

5?6ÐÐÖ¸Õë˳Ðò±íTripledata01¡Ä2?(0,2,-11)(2,3,51)¡Ä(3,0,10)¡Ä(4,1,99)¡Änext?00?11?0?00B5?6??000?0?100?0990??170?¾ØÕórowscolumnsrowlist?6000?matrix5ÐÐÊýÁÐÊý5100??000?000??0n5elementÅÅÐòµ¥Á´±í(0,4,-17)¡Ä³¤¶ÈÊý×é ¾ØÕóÐÐÊýrows-1ͼ5.3 Ï¡Êè¾ØÕóB5?6Ðеĵ¥Á´±í

¢Ú A¼û½Ì²ÄÀý5.2£¬Ï¡Êè¾ØÕóÏà¼ÓÔËËãA+=B½á¹û¼°Ðеĵ¥Á´±íÈç

ͼ5.4Ëùʾ¡£

5?6A5?6?B5?6?000000??0200000?????0005100???290360028????09950000??element012?¡ÄTriplenext(1,1,20)¡Ä(2,3,51)¡Ä(3,0,29)(4,1,99)(3,2,36)(4,2,50)¡Ä(3,5,28)¡Ä¾ØÕómatrixrowscolumnsrowlist56ÐÐÊýÁÐÊýn5³¤¶ÈÊý×é

¾ØÕóÐÐÊýrows-1ͼ5.4 Ï¡Êè¾ØÕóA+=BÐеĵ¥Á´±í

3. Ï¡Êè¾ØÕóÊ®×ÖÁ´±í

ϰ5-9 »­³öÒÔÏÂÏ¡Êè¾ØÕó·ÇÁãÔªËØÈýÔª×éµÄÊ®×ÖÁ´±í´æ´¢½á¹¹¡£

?0?0??59???0?0??0??18000320015?0000000??000860043??0000000? 0000000??0000000?00065000??A7?8¡¾´ð¡¿

- 47 -