{"id":571,"date":"2014-12-31T12:09:39","date_gmt":"2014-12-31T11:09:39","guid":{"rendered":"http:\/\/www.valcon.it\/pascal\/?p=571"},"modified":"2015-07-03T12:57:12","modified_gmt":"2015-07-03T10:57:12","slug":"fusione-di-sequenze","status":"publish","type":"post","link":"https:\/\/www.valcon.it\/pascal\/fusione-di-sequenze\/","title":{"rendered":"Fusione di sequenze"},"content":{"rendered":"<p>A partire da due sequenze ordinate, v1 e v2, si vuole realizzare una terza sequenza ordinata v3.<\/p>\n<h3>Esempi<\/h3>\n<ol type=\"1\">\n<li><tt>v1=(1, 2, 4, 5)<br \/>\nv2=()<br \/>\nv3=(1, 2, 4, 5)<\/tt><\/li>\n<li><tt>v1=(1, 2, 4, 5)<br \/>\nv2=(20, 30, 40, 60)<br \/>\nv3=(1, 2, 4, 5, 20, 30, 40, 60)<\/tt><\/li>\n<li><tt>v1=(1, 2, 4, 5, 7, 10)<br \/>\nv2=(2, 3, 4, 6)<br \/>\nv3=(1, 2, 2, 3, 4, 4, 5, 6, 7, 10)<\/tt><\/li>\n<\/ol>\n<h3>Algoritmo<\/h3>\n<p>Una scansione delle due sequenze sceglie, a ogni passo, l&#8217;elemento da copiare nella terza sequenza.<br \/>\n\u00c8 sufficiente confrontare i primi elementi perch\u00e9&#8230;<\/p>\n<h3>Esempio<\/h3>\n<div class=\"indent\">\n<table class=\"data\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><em>v1<\/em><\/td>\n<td style=\"text-align: center;\"><em>v2<\/em><\/td>\n<td style=\"text-align: center;\"><em>v3<\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>1<\/strong><\/span>, 2, 4, 5, 7, 10<\/td>\n<td>2, 3, 4, 6<\/td>\n<td><strong>1<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>2<\/strong><\/span>, 4, 5, 7, 10<\/td>\n<td>2, 3, 4, 6<\/td>\n<td>1, <strong>2<\/strong><\/td>\n<\/tr>\n<tr>\n<td>4, 5, 7, 10<\/td>\n<td><span style=\"color: #ff0000;\"><strong>2<\/strong><\/span>, 3, 4, 6<\/td>\n<td>1, 2, <strong>2<\/strong><\/td>\n<\/tr>\n<tr>\n<td>4, 5, 7, 10<\/td>\n<td><span style=\"color: #ff0000;\"><strong>3<\/strong><\/span>, 4, 6<\/td>\n<td>1, 2, 2, <strong>3<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>4<\/strong><\/span>, 5, 7, 0<\/td>\n<td>4, 6<\/td>\n<td>1, 2, 2, 3, <strong>4<\/strong><\/td>\n<\/tr>\n<tr>\n<td>5, 7, 10<\/td>\n<td><span style=\"color: #ff0000;\"><strong>4<\/strong><\/span>, 6<\/td>\n<td>1, 2, 2, 3, 4, <strong>4<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>5<\/strong><\/span>, 7,10<\/td>\n<td>6<\/td>\n<td>1, 2, 2, 3, 4, 4, <strong>5<\/strong><\/td>\n<\/tr>\n<tr>\n<td>7, 10<\/td>\n<td><span style=\"color: #ff0000;\"><strong>6<\/strong><\/span><\/td>\n<td>1, 2, 2, 3, 4, 4, 5, <strong>6<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>7<\/strong><\/span>, 10<\/td>\n<td><\/td>\n<td>1, 2, 2, 3, 4, 4, 5, 6, <strong>7<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #000080;\"><strong>10<\/strong><\/span><\/td>\n<td><\/td>\n<td>1, 2, 2, 3, 4, 4, 5, 6, 7, <strong>10<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre class=\"\">Procedure MERGE( \u00a0 \u00a0 V1: Vettore; \u00a0 \u00a0 L1: Integer;\r\n                     V2: Vettore; \u00a0 \u00a0 L2: Integer;\r\n                 Var V3: Vettore; Var L3: Integer);\r\nVar\r\n   I, J, K: Integer;\r\nBegin\r\n   I:=1;\r\n   J:=1;\r\n   K:=1;\r\n   While(I <= L1) And (J <= L2) Do\r\n      Begin\r\n         If(V1[I] &lt;= V2[J]) Then\r\n            Begin\r\n               V3[K]:=V1[I];\r\n               Inc(I);\r\n            End\r\n         Else\r\n            Begin\r\n               V3[K]:=V2[J];\r\n               Inc(J);\r\n            End;\r\n         Inc(K);\r\n      End;\r\n   While(I <= L1) Do\r\n      Begin\r\n         V3[K]:=V1[I];\r\n         Inc(I);\r\n         Inc(K);\r\n      End;\r\n   While(J <= L2) Do\r\n      Begin\r\n         V3[K]:=V2[J];\r\n         Inc(J);\r\n         Inc(K);\r\n      End;\r\n   L3:=K-1;\r\nEnd;<\/pre>\n<\/div>\n<h3>Sottosequenze<\/h3>\n<p>Supponiamo che l\u2019array <strong>V<\/strong> contenga due sottoarray adiacenti ordinati<\/p>\n<ul>\n<li><strong>V\u2019<\/strong>, da <strong>inf<\/strong> a <strong>medio<\/strong><\/li>\n<li><strong>V\u201d<\/strong>, da <strong>medio+1<\/strong> a <strong>sup<\/strong><\/li>\n<\/ul>\n<p>e che l\u2019obbiettivo sia ordinare l\u2019array da <strong>inf<\/strong> a <strong>sup<\/strong>.<\/p>\n<h3 id=\"hn_59ca4f8bbb_1\">Esempio 1<\/h3>\n<p>Con<\/p>\n<div><tt>V = (1, 2, 4, 5, 7, 10, 2, 3, 4, 6)<\/tt><br \/>\n<tt>inf=1, medio=6, sup=10<\/tt><\/div>\n<p>allora<\/p>\n<div><tt>V' = (1, 2, 4, 5, 7, 10)<\/tt><br \/>\n<tt>V'' = (2, 3, 4, 6)<\/tt><br \/>\n<tt>V = (<strong>1<\/strong>, <strong>2<\/strong>, <strong>2<\/strong>, <strong>3<\/strong>, <strong>4<\/strong>, <strong>4<\/strong>, <strong>5<\/strong>, <strong>6<\/strong>, <strong>7<\/strong>, <strong>10<\/strong>)<\/tt><\/div>\n<h3 id=\"hn_59ca4f8bbb_2\">Esempio 2<\/h3>\n<p>Con<\/p>\n<div><tt>V = (1, 2, 4, 5, 7, 10, 2, 3, 4, 6)<\/tt><br \/>\n<tt>inf=4, medio=6, sup=7<\/tt><\/div>\n<p>allora<\/p>\n<div><tt>V' = (5, 7, 10)<\/tt><br \/>\n<tt>V'' = (2)<\/tt><br \/>\n<tt>V = (1, 2, 4, <strong>2<\/strong>, <strong>5<\/strong>, <strong>7<\/strong>, <strong>10<\/strong>, 3, 4, 6)<\/tt><\/div>\n<h3><\/h3>\n<div>Si pu\u00f2 adattare il codice precedente in\u00a0modo che i dati siano copiati, in ordine, su un array temporaneo <strong>VTemp<\/strong> e poi ricopiati su <strong>V<\/strong>, da <strong>inf<\/strong> a <strong>sup<\/strong>.<\/div>\n<pre class=\"\">Procedure MERGE(Var V: Vettore; Inf, Medio, Sup: Integer);\r\nVar\r\n   I, J, K: Integer;\r\n   VTemp  : Vettore;\r\nBegin\r\n   I:=Inf;\r\n   J:=Medio+1;\r\n   K:=Inf;\r\n   While(I <= Medio) And (J <= Sup) Do\r\n      Begin\r\n         If(V[I] <= V[J]) Then\r\n            Begin\r\n               VTemp[K]:=V[I];\r\n               Inc(I);\r\n            End\r\n         Else\r\n            Begin\r\n               VTemp[K]:=V[J];\r\n               Inc(J);\r\n            End;\r\n         Inc(K);\r\n      End;\r\n   While(I <= Medio) Do\r\n      Begin\r\n         VTemp[K]:=V[I];\r\n         Inc(I);\r\n         Inc(K);\r\n      End;\r\n   While(J <= Sup) Do\r\n      Begin\r\n         VTemp[K]:=V[J];\r\n         Inc(J);\r\n         Inc(K);\r\n      End;\r\n   For I:=Inf To Sup Do\r\n      V[I]:=VTemp[I];\r\nEnd;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A partire da due sequenze ordinate, v1 e v2, si vuole realizzare una terza sequenza ordinata v3. Esempi v1=(1, 2, 4, 5) v2=() v3=(1, 2, 4, 5) v1=(1, 2, 4, 5) v2=(20, 30, 40, 60) v3=(1, 2, 4, 5, 20, 30, 40, 60) v1=(1, 2, 4, 5, 7, 10) v2=(2, 3, 4, 6) v3=(1, 2, &#8230; <a title=\"Fusione di sequenze\" class=\"read-more\" href=\"https:\/\/www.valcon.it\/pascal\/fusione-di-sequenze\/\" aria-label=\"Leggi di pi\u00f9 su Fusione di sequenze\">Leggi tutto<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/posts\/571"}],"collection":[{"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/comments?post=571"}],"version-history":[{"count":7,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/posts\/571\/revisions"}],"predecessor-version":[{"id":5653,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/posts\/571\/revisions\/5653"}],"wp:attachment":[{"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/media?parent=571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/categories?post=571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.valcon.it\/pascal\/wp-json\/wp\/v2\/tags?post=571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}