<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>フローチャート on Miura Computer Club</title>
    <link>/tags/%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88/</link>
    <description>Recent content in フローチャート on Miura Computer Club</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-JP</language>
    <lastBuildDate>Fri, 17 Jul 2026 13:00:00 +0900</lastBuildDate><atom:link href="/tags/%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>レッスン104</title>
      <link>/lessons/lesson104/</link>
      <pubDate>Fri, 17 Jul 2026 13:00:00 +0900</pubDate>
      
      <guid>/lessons/lesson104/</guid>
      <description>フローチャート入門 フローチャートとは フローチャート(flowchart)とは、プログラムの流れを図解する手段で、別名「流れ図」ともよばれています。
フローチャートを書く３つの目的 プログラム構造の整理
１つ目の目的はプログラム構造を整理することです。プログラムが正しいか、他の人にレビュー（確認）してもらうこともできるようになります。
効率的にプログラムを作るため
２つ目の目的は効率的にプログラムを作るためです。正しいプログラム構造ができていれば、効率的にプログラムを書くことが出来、後々何回も修正するような無駄を省くことができます。
プログラム品質の向上
フローチャートを書くことでプログラムの全体像が明確になり、漏れやバグを減らすことができ、品質が上がります。
フローチャートを効率よく学び、作る方法 ステップ１
まず記号をおぼえる。数は多くありません。
ステップ２
基本の型や事例をまねしながら、フローチャートを書いてみる。
フローチャートは、googleドキュメントから「描画」を挿入し、新規の図形描画の中で図形を選択すると下の方にいろいろなフローチャートの記号が選択できるので、これを使って簡単に書くことができます。
また、visual studio codeをインストールし、拡張機能でDraw.io Integrationをインストールすることでフローチャートを作成することもできます。
フローチャートの基本ルール（記号） フローチャートは決められた記号を組み合わせて書きます。使う記号を間違えると意味が変わってしまうため、しっかり記号をおぼえてください。記号はそれほど多くありません。
開始／終了 flowchart TD A(開始) フローチャートの開始と終了を表示する記号です。「端子」とも呼ばれています。記号の中に「開始」や「終了」と書いて使います。
処理 flowchart TD A[処理内容] 処理内容を表示する際に使う記号です。処理記号の中に処理内容を書いて使います。
条件分岐 flowchart TD A{条件} 条件分岐を表示する際に使う記号です。記号の中に条件を書いて使います。
定義済み処理 flowchart TD A[[定義済み
処理内容]] 別ページのフローチャートで定義されている一連の処理などを表現する時に使う記号です。別名「サブルーチン（関数）」とも呼ばれています。記号の中に定義済み処理名（関数名）を書いて使います。
入出力 flowchart TD A[/入出力
内容/] 外部データの参照や外部データの書込み、ファイルの入出力などを表現する際に使う記号です。入出力記号の中に、内容を書いて使います。
結合子 flowchart TD A((数字または
参照先名)) 別の処理に飛ばす際に使う記号です。「◯◯参照」を意味します。フローチャートが長くなったり、複雑化した際などに使います。結合子の中に参照先を明示して使います。
フローチャートの基本の型（まねその１） フローチャートには、よく使われる「基本の型」があります。
フローチャートを簡単に作成するには、この「型」をおぼえるのが第一歩です。
すぐおぼえられなくても、まねしているうちにいつの間にかおぼえてしまうものです。
順次構造 順次構造とは、処理する順番に記述されているプログラム構造のことです。
単純に、上から下に処理が流れていくシンプルな構造をしています。
前述したフローチャートの記号を並べて矢印でつなぐだけでOKです。
順次構造の例 %%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%% flowchart TD A(開始) --&gt; B[[処理A]] --&gt; C[[処理B]] --&gt; D[/ログ出力/] --&gt; E(終了) 分岐構造 分岐構造とは、条件によって処理内容が分かれるプログラム構造のことです。</description>
      <content>&lt;script src=&#34;https://unpkg.com/mermaid/dist/mermaid.min.js&#34;&gt;&lt;/script&gt;
&lt;h1 id=&#34;フローチャート入門&#34;&gt;フローチャート入門&lt;/h1&gt;
&lt;h2 id=&#34;フローチャートとは&#34;&gt;フローチャートとは&lt;/h2&gt;
&lt;p&gt;フローチャート(flowchart)とは、プログラムの流れを図解する手段で、別名「流れ図」ともよばれています。&lt;/p&gt;
&lt;h2 id=&#34;フローチャートを書く３つの目的&#34;&gt;フローチャートを書く３つの目的&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;プログラム構造の整理&lt;/p&gt;
&lt;p&gt;１つ目の目的はプログラム構造を整理することです。プログラムが正しいか、他の人にレビュー（確認）してもらうこともできるようになります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;効率的にプログラムを作るため&lt;/p&gt;
&lt;p&gt;２つ目の目的は効率的にプログラムを作るためです。正しいプログラム構造ができていれば、効率的にプログラムを書くことが出来、後々何回も修正するような無駄を省くことができます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プログラム品質の向上&lt;/p&gt;
&lt;p&gt;フローチャートを書くことでプログラムの全体像が明確になり、漏れやバグを減らすことができ、品質が上がります。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;フローチャートを効率よく学び作る方法&#34;&gt;フローチャートを効率よく学び、作る方法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ステップ１&lt;/p&gt;
&lt;p&gt;まず記号をおぼえる。数は多くありません。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ステップ２&lt;/p&gt;
&lt;p&gt;基本の型や事例をまねしながら、フローチャートを書いてみる。&lt;/p&gt;
&lt;p&gt;フローチャートは、googleドキュメントから「描画」を挿入し、新規の図形描画の中で図形を選択すると下の方にいろいろなフローチャートの記号が選択できるので、これを使って簡単に書くことができます。&lt;/p&gt;
&lt;p&gt;また、visual studio codeをインストールし、拡張機能でDraw.io Integrationをインストールすることでフローチャートを作成することもできます。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;フローチャートの基本ルール記号&#34;&gt;フローチャートの基本ルール（記号）&lt;/h2&gt;
&lt;p&gt;フローチャートは決められた記号を組み合わせて書きます。使う記号を間違えると意味が変わってしまうため、しっかり記号をおぼえてください。記号はそれほど多くありません。&lt;/p&gt;
&lt;h3 id=&#34;開始終了&#34;&gt;開始／終了&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A(開始)
&lt;/div&gt;
&lt;p&gt;フローチャートの開始と終了を表示する記号です。「端子」とも呼ばれています。記号の中に「開始」や「終了」と書いて使います。&lt;/p&gt;
&lt;h3 id=&#34;処理&#34;&gt;処理&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A[処理内容]
&lt;/div&gt;
&lt;p&gt;処理内容を表示する際に使う記号です。処理記号の中に処理内容を書いて使います。&lt;/p&gt;
&lt;h3 id=&#34;条件分岐&#34;&gt;条件分岐&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A{条件}
&lt;/div&gt;
&lt;p&gt;条件分岐を表示する際に使う記号です。記号の中に条件を書いて使います。&lt;/p&gt;
&lt;h3 id=&#34;定義済み処理&#34;&gt;定義済み処理&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A[[定義済み&lt;br&gt;処理内容]]
&lt;/div&gt;
&lt;p&gt;別ページのフローチャートで定義されている一連の処理などを表現する時に使う記号です。別名「サブルーチン（関数）」とも呼ばれています。記号の中に定義済み処理名（関数名）を書いて使います。&lt;/p&gt;
&lt;h3 id=&#34;入出力&#34;&gt;入出力&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A[/入出力&lt;br&gt;内容/]
&lt;/div&gt;
&lt;p&gt;外部データの参照や外部データの書込み、ファイルの入出力などを表現する際に使う記号です。入出力記号の中に、内容を書いて使います。&lt;/p&gt;
&lt;h3 id=&#34;結合子&#34;&gt;結合子&lt;/h3&gt;
&lt;div class=&#34;mermaid&#34;&gt;
flowchart TD
    A((数字または&lt;br&gt;参照先名))
&lt;/div&gt;
&lt;p&gt;別の処理に飛ばす際に使う記号です。「◯◯参照」を意味します。フローチャートが長くなったり、複雑化した際などに使います。結合子の中に参照先を明示して使います。&lt;/p&gt;
&lt;h2 id=&#34;フローチャートの基本の型まねその１&#34;&gt;フローチャートの基本の型（まねその１）&lt;/h2&gt;
&lt;p&gt;フローチャートには、よく使われる「基本の型」があります。&lt;/p&gt;
&lt;p&gt;フローチャートを簡単に作成するには、この「型」をおぼえるのが第一歩です。&lt;/p&gt;
&lt;p&gt;すぐおぼえられなくても、まねしているうちにいつの間にかおぼえてしまうものです。&lt;/p&gt;
&lt;h3 id=&#34;順次構造&#34;&gt;順次構造&lt;/h3&gt;
&lt;p&gt;順次構造とは、処理する順番に記述されているプログラム構造のことです。&lt;/p&gt;
&lt;p&gt;単純に、上から下に処理が流れていくシンプルな構造をしています。&lt;/p&gt;
&lt;p&gt;前述したフローチャートの記号を並べて矢印でつなぐだけでOKです。&lt;/p&gt;
&lt;h4 id=&#34;順次構造の例&#34;&gt;順次構造の例&lt;/h4&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始) --&gt; B[[処理A]] --&gt; C[[処理B]] --&gt; D[/ログ出力/] --&gt; E(終了)
&lt;/div&gt;
&lt;h3 id=&#34;分岐構造&#34;&gt;分岐構造&lt;/h3&gt;
&lt;p&gt;分岐構造とは、条件によって処理内容が分かれるプログラム構造のことです。&lt;/p&gt;
&lt;p&gt;分岐条件は、ひし形の記号を使って表現します。&lt;/p&gt;
&lt;p&gt;例えば、Pythonの&lt;code&gt;if else&lt;/code&gt;などを表現する際に使います。&lt;/p&gt;
&lt;p&gt;if・else文を表現する場合は、下図のように条件分岐と処理の記号を組み合わせるだけで書くことができます。どの条件にも一致しなかったときの処理（下図では処理4）を忘れないようにしてください。&lt;/p&gt;
&lt;h4 id=&#34;ifelse文の例&#34;&gt;if・else文の例&lt;/h4&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    H(開始) --&gt; A{条件1} -- Yes--&gt; B[処理1] --&gt; I(終了)
    A -- No --&gt; C{条件2}
    C -- Yes --&gt; D[処理2] --&gt; I
    C -- No --&gt; E{条件3}
    E -- Yes --&gt; F[処理3] --&gt; I
    E -- No --&gt; G[処理4] --&gt; I 
&lt;/div&gt;
&lt;h3 id=&#34;反復構造ループ&#34;&gt;反復構造（ループ）&lt;/h3&gt;
&lt;p&gt;反復構造とは、条件を満たしている間、または条件を満たすまで処理を繰り返すプログラム構造のことです。たとえばPythonではfor文やwhile文などを表現する際に使います。下図のように「条件分岐記号」を使用して表現します。&lt;/p&gt;
&lt;h4 id=&#34;反復構造の例&#34;&gt;反復構造の例&lt;/h4&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始) --&gt;   B[i = 1] --&gt; C{i &lt;= 10} --　Yes --&gt; D[&#34;print(i)&#34;]--&gt; E[i += 1] --&gt; C
    C -- No ---&gt; F(終了)
&lt;/div&gt;
&lt;p&gt;ループ構造の中にさらにループ構造がある構造のことを「二重ループ」と言います。&lt;/p&gt;
&lt;p&gt;九九の表を処理するときのように２つの軸（２次元といいます）のデータを処理するときなどに使われます。&lt;/p&gt;
&lt;h4 id=&#34;二重ループの例&#34;&gt;二重ループの例&lt;/h4&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始) --&gt; B[処理1] --&gt; C{条件} -- Yes --&gt; D{条件} -- Yes --&gt; E[処理2] --&gt; D
    C -- No ----&gt; F(終了)
    D -- No ---&gt; G[処理3] --&gt; C
&lt;/div&gt;
&lt;h2 id=&#34;アルゴリズムをフローチャートで書いてみる&#34;&gt;アルゴリズムをフローチャートで書いてみる&lt;/h2&gt;
&lt;p&gt;ある課題に対してそれを解決するための処理手順のことを「アルゴリズム」といいます。アルゴリズムをフローチャートで図解してみましょう。&lt;/p&gt;
&lt;p&gt;例として「バブルソート」のアルゴリズムをフローチャート化してみます。&lt;/p&gt;
&lt;h3 id=&#34;バブルソート&#34;&gt;バブルソート&lt;/h3&gt;
&lt;p&gt;ばらばらの数字の配列（数字が並んだ列）を値の小さい順（または大きい順）に並び替えることを「ソート(Sort)」といいます。小さい順に並べるのを「昇順ソート」、大きい順に並べるのを「降順ソート」といいます。今回は「昇順ソート」を行います。&lt;/p&gt;
&lt;p&gt;「ソート」のアルゴリズムにはいろいろありますが、比較的単純な方法（アルゴリズム）に「バブルソート」と呼ばれるアルゴリズムがあります。&lt;/p&gt;
&lt;h4 id=&#34;アルゴリズム&#34;&gt;アルゴリズム&lt;/h4&gt;
&lt;p&gt;配列の全ての要素に対して、隣接する要素を比較し、順番が逆であれば入れ替えるという操作を配列の先頭から最後尾まで行えば、一番大きい値が最後尾にくるので最後尾の値が確定します。次に、この処理を配列の先頭から値が確定した最後尾の１つまで行います。全ての値が確定するまでこの処理を繰り返すと、配列が昇順にソートされます。&lt;/p&gt;
&lt;p&gt;ソートする数字の配列を&lt;code&gt;a&lt;/code&gt;、配列の長さを&lt;code&gt;n&lt;/code&gt;とします。配列の各要素は、&lt;code&gt;a[0], a[1], a[2], ..., a[n-1]&lt;/code&gt;と表現することができます。&lt;/p&gt;
&lt;p&gt;確定した要素の位置を&lt;code&gt;k&lt;/code&gt;とします。kの初期値は全ての値が確定していないので&lt;code&gt;最後尾+1&lt;/code&gt;すなわち&lt;code&gt;n&lt;/code&gt;になります。&lt;code&gt;k&lt;/code&gt;の値が先頭すなわち&lt;code&gt;0&lt;/code&gt;になれば全ての値が確定し、ソートが終了したことになります。&lt;/p&gt;
&lt;h4 id=&#34;フローチャート&#34;&gt;フローチャート&lt;/h4&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始) --&gt; B[k = n] --&gt; C{k &gt; 0} -- Yes --&gt; D[i = 0]
    --&gt; E{i &lt; k-1} --Yes --&gt; F{&#34;a[i] &gt; a[i+1]&#34;} -- Yes --&gt;
    G[&#34;a[i]とa[i+1]を交換&#34;] --&gt; H[i = i + 1] --&gt; E
    F -- No --&gt; H
    E -- No --&gt; I[k = k - 1] --&gt; C
    C -- No ------&gt; J(終了)
&lt;/div&gt;
&lt;h2 id=&#34;フローチャートからプログラムを書く&#34;&gt;フローチャートからプログラムを書く&lt;/h2&gt;
&lt;p&gt;前述のバブルソートのフローチャートからPythonのプログラムを書いてみましょう。&lt;/p&gt;
&lt;p&gt;まず、配列&lt;code&gt;a&lt;/code&gt;に初期データとして&lt;code&gt;8 4 3 7 6 5 2 1&lt;/code&gt;というソートされていない値を設定します。配列の長さ&lt;code&gt;n&lt;/code&gt;は&lt;code&gt;8&lt;/code&gt;です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;「開始」「終了」は今回は必要ないので無視します。（関数なら開始が関数定義(&lt;code&gt;def&lt;/code&gt;)、終了が&lt;code&gt;return&lt;/code&gt;になります）&lt;/p&gt;
&lt;p&gt;最初のステップで変数&lt;code&gt;k&lt;/code&gt;に&lt;code&gt;n&lt;/code&gt;を設定します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;次のステップで&lt;code&gt;k&lt;/code&gt;が&lt;code&gt;0&lt;/code&gt;より大きいか比較し、大きければループ処理に入り、そうでなければループ処理を終了します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最初のループ処理では、&lt;code&gt;i&lt;/code&gt;を&lt;code&gt;0&lt;/code&gt;で初期化し、さらに次のステップで&lt;code&gt;i&lt;/code&gt;が&lt;code&gt;k-1&lt;/code&gt;より小さい間、２番目のループ処理に入り、そうでなければ２番目のループ処理を終了します。２番目のループ処理が終わったら、&lt;code&gt;i&lt;/code&gt;に１を加えます。pythonではこの３つのステップをまとめて&lt;code&gt;for&lt;/code&gt;文で処理します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(k&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;range(k-1)&lt;/code&gt;は&lt;code&gt;range(0, k-1, 1)&lt;/code&gt;と同じ意味で、変数&lt;code&gt;i&lt;/code&gt;を&lt;code&gt;0&lt;/code&gt;で初期化し、変数&lt;code&gt;i&lt;/code&gt;が&lt;code&gt;k-1&lt;/code&gt;より小さい間以下のループ処理を行い、ループ処理終了後変数&lt;code&gt;i&lt;/code&gt;に&lt;code&gt;1&lt;/code&gt;を加算することを示しています。&lt;/p&gt;
&lt;p&gt;２番目の処理ループでは、&lt;code&gt;a[i]&lt;/code&gt;と&lt;code&gt;a[i+1]&lt;/code&gt;を比較し、&lt;code&gt;a[i]&lt;/code&gt;の方が大きければ、&lt;code&gt;a[i]&lt;/code&gt;と&lt;code&gt;a[i+1]&lt;/code&gt;の値を交換します。pythonでは値の交換は&lt;code&gt;a[i], a[i+1] = a[i+1], a[i]&lt;/code&gt;と表現することができます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; a[i] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            a[i], a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], a[i]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;２番目のループを終了したら、変数&lt;code&gt;k&lt;/code&gt;の値を1つ減らして、最初のループに戻ります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k &lt;span style=&#34;color:#f92672&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上でフローチャートからPythonのプログラムの作成は終了です。&lt;/p&gt;
&lt;p&gt;Pythonのプログラムを整理すると以下のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; n
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(k&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; a[i] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			a[i], a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], a[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	k &lt;span style=&#34;color:#f92672&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後に&lt;code&gt;print(a)&lt;/code&gt;を実行して配列&lt;code&gt;a&lt;/code&gt;がソートされて&lt;code&gt;[1, 2, 3, 4, 5, 6, 7, 8]&lt;/code&gt;になっていることを確認してください。&lt;/p&gt;
&lt;h2 id=&#34;演習問題&#34;&gt;演習問題&lt;/h2&gt;
&lt;h3 id=&#34;演習問題１選択ソートselection-sort&#34;&gt;演習問題１　選択ソート（selection sort）&lt;/h3&gt;
&lt;p&gt;選択ソート（selection sort）とは、ソートアルゴリズムの１つで、配列から最小値を探し、配列の先頭要素と入れ替えることを繰り返して並べ替えを行うものである。&lt;/p&gt;
&lt;h4 id=&#34;アルゴリズム-1&#34;&gt;アルゴリズム&lt;/h4&gt;
&lt;p&gt;選択ソートは以下の手順で行います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;１番目の要素から最後尾の要素までで最も値の小さいものを探し、それを１番目の要素と交換する（１番目の要素までソート済みとなる）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;２番目の要素から最後尾の要素までで最も値の小さいものを探し、それを２番目の要素と交換する（２番目の要素までソート済みとなる）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以降同様に、未ソート部分の最小要素を探索し、未ソート部分の先頭要素と交換する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全ての要素がソート済みになったら処理を終了する&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;問題&#34;&gt;問題&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;選択ソートのアルゴリズムのフローチャートを作成してください&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作成したフローチャートからPythonでプログラムを作成し、バブルソートのときと同じテストデータを使って正しくソートされるか確認してください&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;ヒント&#34;&gt;ヒント&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ソート済みの要素数を変数&lt;code&gt;k&lt;/code&gt;とし、初期値を&lt;code&gt;0&lt;/code&gt;とします。最小値を探す処理が終了するたびに&lt;code&gt;k&lt;/code&gt;の値が１つずつ増え、値が配列&lt;code&gt;a&lt;/code&gt;の長さ&lt;code&gt;n&lt;/code&gt;になったらソート終了です。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最小値を探す対象は&lt;code&gt;a[k]&lt;/code&gt;の要素から&lt;code&gt;a[n-1]&lt;/code&gt;の要素までです。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最小値とその位置を探す方法は、まず探す対象の先頭の位置を変数&lt;code&gt;mini&lt;/code&gt;に入れます。先頭の位置は&lt;code&gt;k&lt;/code&gt;なので&lt;code&gt;mini = k&lt;/code&gt;となります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;次に先頭から次の値&lt;code&gt;a[k+1]&lt;/code&gt;から最後尾&lt;code&gt;a[n-1]&lt;/code&gt;まで現在の最小値&lt;code&gt;a[mini]&lt;/code&gt;と比較し、値が変数&lt;code&gt;a[mini]&lt;/code&gt;より小さい場合は変数&lt;code&gt;mini&lt;/code&gt;を小さい方の位置に書き換えます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最後尾に達したら&lt;code&gt;a[mini]&lt;/code&gt;の値が最小値なので、この値と先頭の値&lt;code&gt;a[k]&lt;/code&gt;を交換します。&lt;code&gt;a[k], a[mini] = a[mini], a[k]&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;&lt;summary&gt;回答例&lt;/summary&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始) --&gt; B[k = 0] --&gt; C{k &lt; n} -- Yes --&gt;
    D[mini = k] --&gt; E[i = k+1] --&gt; F{i &lt; n} -- Yes --&gt;
    G{&#34;a[i] &lt; a[mini]&#34;} -- Yes --&gt; H[mini = i] --&gt;
    I[i += 1] --&gt; F
    G -- No --&gt; I
    F -- No ---&gt; J[&#34;a[k]とa[mini]を交換&#34;] --&gt; K[k += 1] --&gt; C
    C -- No -------&gt; L(終了)
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; n:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mini &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; k
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(k&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, n):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; a[i] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; a[mini]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            mini &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; i
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a[k], a[mini] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a[mini], a[k]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h3 id=&#34;演習問題２挿入ソートinsertion-sort&#34;&gt;演習問題２　挿入ソート（insertion sort）&lt;/h3&gt;
&lt;p&gt;挿入ソート（insertion sort）とは、ソートアルゴリズムの１つで、配列の整列済みの部分に追加要素を適切な場所に挿入することを繰り返すことで並べ替えを行う方法である。&lt;/p&gt;
&lt;h4 id=&#34;アルゴリズム-2&#34;&gt;アルゴリズム&lt;/h4&gt;
&lt;p&gt;挿入ソートは以下の手順で行います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;０番目と１番目の要素を比較し、０番目の方が大きければ入れ換える。この操作で１番目までのデータが整理済みとなる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;２番目の要素が１番目までの要素より小さければ、正しい順番に並べるように２番目の要素を挿入する。（２番目の要素を変数に保存し、２番目より要素が大きい間、その要素を１つずつずらし、適切な位置に保存した変数の値を書き込む）。この操作で２番目までのデータが整理済みとなる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;このあと、３番目以降の要素について整理済みデータとの比較と適切な位置への挿入を繰り返す。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;問題-1&#34;&gt;問題&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;挿入ソートのアルゴリズムのフローチャートを作成してください&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作成したフローチャートからPythonでプログラムを作成し、バブルソートのときと同じテストデータを使って正しくソートされるか確認してください&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;ヒント-1&#34;&gt;ヒント&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;整理済みの要素数を変数&lt;code&gt;k&lt;/code&gt;とし、&lt;code&gt;0&lt;/code&gt;で初期化します。挿入による再整理が終了するたびに変数&lt;code&gt;k&lt;/code&gt;を１つ加算し、この値が変数の長さ&lt;code&gt;n-1&lt;/code&gt;になったら全ての要素が整理済みとなるのでソートを終了します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;まず変数&lt;code&gt;tmp&lt;/code&gt;に&lt;code&gt;a[k+1]&lt;/code&gt;の値を保存します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;変数&lt;code&gt;i&lt;/code&gt;を&lt;code&gt;k+1&lt;/code&gt;に初期化します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;変数&lt;code&gt;i&lt;/code&gt;が&lt;code&gt;0&lt;/code&gt;より大きいかつ&lt;code&gt;a[i-1]&lt;/code&gt;が&lt;code&gt;tmp&lt;/code&gt;よりおおきければ&lt;code&gt;a[i-1]&lt;/code&gt;の値を&lt;code&gt;a[i]&lt;/code&gt;に書き込み（要素を１つずらす）、変数&lt;code&gt;i&lt;/code&gt;を１つ減らします。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;a[i]&lt;/code&gt;に変数&lt;code&gt;tmp&lt;/code&gt;の値を書き込みます&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;&lt;summary&gt;回答例&lt;/summary&gt;
&lt;div class=&#34;mermaid&#34;&gt;
%%{init:{&#39;themeVariables&#39;:{&#39;lineColor&#39;:&#39;#FFFFFFFF&#39;}}}%%
flowchart TD
    A(開始)--&gt;B[k = 0]--&gt;C{k &lt; n-1}-- Yes --&gt;D[&#34;tmp = a[k+1]&#34;]
    --&gt;E[i = k+1]--&gt;F{&#34;i &gt; 0 and a[i-1] &gt; tmp&#34;}-- Yes --&gt;G[&#34;a[i] = a[i-1]&#34;]
    --&gt;H[i -= 1]--&gt;F
    F-- No --&gt; I[&#34;a[i] = tmp&#34;]--&gt; J[k += 1]--&gt;C
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; n &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tmp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a[k&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; k&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; tmp:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        a[i] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a[i&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        i &lt;span style=&#34;color:#f92672&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a[i] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tmp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/detail&gt;
&lt;script&gt;
    mermaid.initialize({
      startOnLoad: true
    });
&lt;/script&gt;
</content>
    </item>
    
  </channel>
</rss>
