• 締切済み

基数整列法について教えてください(前編)

いつもありがとうございます。 さて、午後のアルゴリズムの基数整列法の項ですが、整列の様子は理解できるのですが、流れ図がよく理解できません。お詳しい方、トレース等も含めてわかりやすく解説願えないでしょうか? よろしくお願いいたします。 ちゃりお ------------------------------------------------------------- 【配列】423、121、312、231、232、253、312、337 [8件] 【説明】2次元配列の「山(山番号、山のデータ数)」(山番号=0~9、山のデータ数=1~件数)に分類して、元の配列「データ(n)」(n=1~件数)に統合する。 【出典】基本情報[午後]完全合格教本/福島宏訓著/新星出版社(P40-41) 【整列の様子】 1桁目の数字で分類: 1の山 2の山 3の山 7の山  121 231 312 232 312 423 253 337 山を統合: 121 231 312 232 312 423 253 337 2桁目の数字で分類: 1の山 2の山 3の山 5の山 312 312 121 423 231 232 337 253 山を統合: 312 312 121 423 231 232 337 253 3桁目の数字で分類: 1の山 2の山 3の山 4の山 121 231 232 253 312 312 337 423 山を統合: 121 231 232 253 312 312 337 423 基数整列法について教えてください(後編につづく)

  • chaz
  • お礼率65% (36/55)

みんなの回答

回答No.1

管理者より: 続きの質問があるのでそちらをご参照下さい

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=211606

関連するQ&A

  • 基数整列法について教えてください(後編)

    基数整列法について教えてください(前編)の続きです。 長文につき1投稿では入りきらないため、2回にわけております。 回答はこちら(後編)のほうにお願いいたします。 ちゃりお -------------------------------------------------------------------- 【流れ図】 端子:開始 │ 処理:3→桁数 │ ループ始端:桁ループ(桁数=1、桁数) │ │  ループ始端:山数クリア(山番号=0,9)  │  処理:0→山数(山番号)  │  ループ終端:山数クリア  │  │  ループ始端:分類ループ(番号=1、件数)  │  処理:ユーザ関数(番号、桁)→山番号・・・桁の数字を山番号に設定  │  処理:山数(山番号)+1→山数(山番号)/ データ(番号)→山(山番号、山数(山番号))  │  ループ終端:分類ループ  │  │  処理:0→番号  │  │  ループ始端:統合ループ(山番号=0,9)  │  │   ループ始端:転送ループ(数=1、山数(山番号))   │   処理:番号+1→番号/ 山(山番号、数)→データ(番号)   │   ループ終端:転送ループ  │  │  ループ終端:統合ループ │ │ ループ終端:桁ループ │ 端子:終了 関連URL: http://oshiete1.goo.ne.jp/kotaeru.php3?q=211604

  • ORDERBY句で整列させたデータとプレビューが違う

    Windows2000 SQLServer Access2000で開発しています。 以下、プログラムの抜粋より、 SQL2 = "Delete from T_W会員別データ" CurrentProject.Connection.Execute SQL2 SQL3 = "Insert into T_W会員別データ " & _ "Select 会員番号, 契約番号, COUNT(*) as 請求件数 " & _ "from T_統合データ " & _ "Where ( 扱月 = '" & txt扱月 & "' and '" & 270000 & "' <= 確認番号 and 確認番号 <= '" & 279999 & "' ) " & _ SQL3 = SQL3 & "Group by 契約番号, 会員番号 " SQL3 = SQL3 & "Order by 契約番号 " gMainConnection.Execute SQL3 DoCmd.OpenReport "R_チェック用一覧", acPreview, , whereCond と作成しているのですが、 T_W会員別データ では「契約番号」の昇順で整列しているのですが、 R_チェック用一覧のプレビューが表示されると、会員番号で昇順整列 されます。変更しないといけない部分はどこになるのでしょうか?

    • ベストアンサー
    • MySQL
  • 基本情報平成4年春の問題

    基本情報平成4年春の問題で問題集の答えが、納得いきません。どなたかよったら 教えてください。 問題 リストヘの登録 次の流れ図中の(a)~(C)に適切な字句を補い,流れ図を完成せよ。 〔流れ図の説明〕 流れ図は,ファイルから数値データを読み込み,配列に格納するとともに,昇順にポイ ンタでつなぐ処理を表す。 (1)配列の要素は,データ領域(DATA)とポインタ領域(POlNTER)からなる。データ領域に は,数値データを読み込んだ順に格納する。ポインタ領域には,各数値データを昇順に 並べた場合,その数値データの直後にくるデータが格納されている配列要素番号を格納 する。1件の数値データをデータ領域に格納するたびに,対応するボインタ領域に値を 格納する。このとき,必要があればそれまでにセットしたポインタ領域の値を修正する。 (2)一番大きい値のデータが格納されている配 列要素のポインタ領域の値は,0にする。 一番小さい値のデータが格納されている配 列要素の要素番号を,変数MlNに格納する。 配列にデータが1件も格納されてし/ない場 合,変数MlNの値は0である。 (3)同じ値のデータが配列中に存在する場合、 先に格納されたデータほど小さい値とみなして処理を行う

  • エクセルの文字列操作の仕方

    ご存じの方がいらっしゃいましたら、教えてください。 今、エクセルの住所リストを固定長のテキストファイルに変換する作業をしています。 このやり方が合ってるのかわかりませんが、各項目のデータを「&」で結んで、ひとりのデータを1行のテキストデータにしようとしています。 というわけで作業をしているんですが、他の項目はうまくいくんですが、電話番号の部分で、指定フォーマット(半角12文字)への変換ができずに行き詰まってしまいました。 どういうことかと言いますと、エクセルの数字を12桁の文字列に統一できないのです。(10桁の数字+2桁の空白という風に) 電話番号のほとんどは10桁ですが、中にはブランクとか携帯の11桁とか、いろいろあります。 件数が多いので、1件1件2桁のブランクを加えるわけにもいきません。 いい方法がありましたら、ご教授お願いいたします。

  • 教えて下さい。

    教えて下さい。 COUNTIFの関数について質問です。 頭に「K」と「M」がつく数字9桁の番号があります。Kも合わせて10桁です。 そのKがつく件数だけと、Mがつく件数だけ、それぞれ合計いくつあるのか調べたいのですが、どのような式にしたらいいのでしょうか。 手持ちのエクセルのテキストを見て調べましたがわかりません。どなたかよろしくお願いいたします。

  • エクセルで桁を変える場合は・・・

    エクセルでお伺いしたいのですが 数字の桁を一気に置き換えることはできますでしょうか?例えば「100,000,000」というデータを「100.000000」というデータに置き換えたいのですが。 つまり、100万以下を小数点で区切りたいのです 件数があって、困っています。教えてください。よろしくお願いします

  • C言語 クイックソートについて

    以下の数字を用いて・・・・ num[10] = {21, 46, 87, 9, 32, 33, 57, 87, 12, 43} クイックソートで整列する時,データの入れ替え状況,配列の内容の変化について,データの入れ替え過程をプログラムでない形で説明をお願いします。アルゴリズムの特徴がわかる説明と入れ替え過程を示してほしいです。 以下の数字を用いてお願いします。 例: ●●で分割: {                    } ●●で分割: {                     }           ・           ・           ・           ・ 整列後: {                     }

  • アルゴリズムによる整列方法について

    以下の問題を授業外課題として出されましたがわかりません。身近に分かる人物もいません。 先生も答えてくれません。 解答お待ちしております。 1.以下の文章の空欄を埋めよ.但し,((14)),((15)) については,選択肢から最も適切なものを選び,記号で答えよ.加えて,解答の過程を詳しく述べよ。 高速な整列として以下のアルゴリズムによる方法を考える.以下では,整数データを昇順に配列するも のとする. 前段階として,データを半々に二つのグループ I と II に分割し,それぞれを独立に整列する. while (両グループに要素が残っている) do    if (グループ I の最小要素 < グループ II の最小要素)    then  グループ I の最小要素を出力場所に移し,グループ I からは削除する    else  グループ II の最小要素を出力場所に移し,グループ II からは削除する    endif done while (グループ I に要素が残っている) do  グループ I の要素を出力場所に移し,グループ I からは削除する done while (グループ II に要素が残っている) do  グループ II の要素を出力場所に移し,グループ II からは削除する done この整列に要する計算量 T(n) を求める.但し,n は整列するデータの量である.前段階の整列では,半分のデータ量の整列を 2 回行うので ((1)) だけの計算を要する.次に,3 個の while 反復のいずれについても, 「反復を 1 回行うごとに要素が一つだけ出力場所に移動する」 ことから,3 個を合計すると反復の中身は正確に ((2)) 回実行されることが分かる.1 回の実行に a だけの時間がかかるものとすれば,全体で ((3)) となる.従って次の関係式が成り立つ. T(n) = ((4)) 簡単のため,n = 2^p であるとすると, T(n) = ((5))×T(2^((6)) ) + ((7))    = ((8)) × T(2^((9)) ) + 2 × ((7))    ・    ・    ・    = ((10)) × T(2^0) + ((11)) T(2^0) = ((12)) なので,T(n) を a と n のみを用いて表すと, T(n) = ((13)) であり,これは, ((14)) に比例し,計算量のオーダーは ((15)) といえる. ((14)),((15)) の選択肢 a. n b. n^2 c. 2^n d. n log n e. log n f. いわゆる「指数オーダー」であり,アルゴリズムとして全く実用に耐えない g. いわゆる「バカソート」と同じであり,n がごく小さい場合を除いて実用には適さない h. 経験上最速とされるソート法には及ばないが,それほど大きくない n に対しては実用に耐える i. 経験上最速とされるソート法と同じであり,十分大きい n に対しても実用に耐える

  • 流れ図について

    次(添付)の流れ図は、 最大値選択法によって値を大きい順に整列するものである。 *印の処理(比較)が実行される回数を表す式は、どれか。 正解 n(n-1)/2 4+3+2+1=10(下記参照)を満たすものを探します。 n=5でトレースしています。 仮のデータを3,8,2,4,6として下さい。 自力で解釈しようとしたのですが、 添付した流れ図のトレースの仕方が分かりません。 お手数ですがトレースの仕方を詳しく教えて下さい。 仮のデータとは、何処で使っているのですか。 数式での回数とは、どういうことですか。 ご説明して頂ける方おられましたら、ご教授お願いします。 以上、よろしくお願い致します。

  • アルゴリズムに関する問題

    こんばんわ、いくつかの問題につまってしまったので解答と簡単な解説をお願いします; 【問1】 4桁の数字( a1a2a3a4 )をハッシュ法を用いて配列に格納したい。 ハッシュ関数をmod( a1 +a2 +a3 +a4 ,5 )とし、求めたハッシュ関数値に対応する位置の配列要素に格納する場合、9576は(ア)~(オ)のどこに入るか。 ここでmod(x,5)の値は、xを5で割った余りとする。 位置  配列 0  (ア) 1  (イ) 2  (ウ) 3  (エ) 4  (オ) 【問2】 相違なるn個のデータが昇順に整列された表がある。この表を1ブロックm個に分割し、各ブロックの最後尾のデータだけ線形検索することによって、目的のデータを探し出す。 次に当該ブロック内を線形検索して目的のデータを探し出す。 このときの平均探索(比較)回数は(ア)~(エ)のうちどれか。 ここでm<nとし、目的のデータは必ず表の中に存在するものとする。 (ア)  (イ)  (ウ)  (エ)  n    n          n    m n  ─    ─    m + ─   ─+─  m    2m         m    2 2m 【問3】 次の手順はシェルソートによる整列を示している。 データ列”7,2,8,3,1,9,4,5,6”を手順(1)~(4)に従って整列すると手順(3)を何回繰り返して完了するか。 ここで、〔〕は小数点以下を切り捨てる。 <手順> (1)〔データ数÷3〕→Hとする。 (2)データ列を互いにH要素分だけ離れた要素の集まりからなる部分列とし、それぞれの部分列を挿入方を用いて整列する。 (3)〔H÷3〕→Hとする (4)Hが0であればデータ列の整列は完了し、0でなければ(2)に戻る。 以上になります。

専門家に質問してみよう