アルゴリズムとデータ構造 第6回演習解答 2015/11/18実施 アルゴリズムとデータ構造 2015.

Slides:



Advertisements
Similar presentations
C 言語講座 第 7 回 ポインター. メモリとアドレス(ポインターの前 に) コンピュータのメモリには 1 バイトずつ 0 番地、 1 番地、 2 番地・・・というように 住所が割り当てられている この住所をアドレスという。 メモリはデータをしまうもので それを引き出すためには メモリに番号(アドレス)を振っておけばよいな.
Advertisements

電力配線図(A系統:長さmm) 消費電力:1100W TH-LC 2階 220 ⑥タップ (電力源タップ)
Endnoteの使い方~AMS雑誌用~ 稲津 將 北海道大学 大学院理学研究院.
ようこそ 自主学習室へ! いっしょに算数の勉強をしましょう。
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
ヒープソートの演習 第13回.
アルゴリズムとデータ構造 2012年6月27日
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
第12回 ソート(3): シェルソート、クイックソート
アルゴリズムとデータ構造 第8回 ソート(3).
第10回 整列 ~ バブルソート,挿入ソート,選択ソート~
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プロセッシング入門3 初歩のプログラミング.
情報知能学科「アルゴリズムとデータ構造」
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
4.整列のアルゴリズム.
第10回 ソート(1):単純なソートアルゴリズム
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
ヒープソートの復習.
第11回 整列 ~ シェルソート,クイックソート ~
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 構造体, 構造体とポインタの組み合わせ,.
二分探索木によるサーチ.
・ Twinpact100のDV入力(プレゼン画面キャプチャ) ・ WEBカメラ(発表者) の両方を1画面にして配信・録画する。
算法数理工学 第3回 定兼 邦彦.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
情報工学概論 (アルゴリズムとデータ構造)
前回の練習問題.
 2 文字の式 1章 文字を使った式 §4 式の計算         (4時間).
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
アルゴリズムとデータ構造1 2005年7月1日
第7回課題 フィボナッチ数列 (コード:p.171) について,fib(4) を呼び出したときの起こる出来事は以下の通りである.
長崎市① 長崎市における平和学習スポット (社)長崎県観光連盟.
Cプログラミング演習 第10回 二分探索木.
アルゴリズムとプログラミング (Algorithms and Programming)
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 4 整列アルゴリズム.
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
ブレッド・ボードを用いた回路の作成 気温データ・ロガー編.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 4 木構造とヒープ.
アルゴリズムとデータ構造1 2006年7月11日
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
今から2200年ほど前に,古代ギリシアのアルキメデスは,円周率が3と71分の10より大きく,3と7分の1より小さいことを発見しました。・・・
12枚のコイン.
アルゴリズムとデータ構造 2012年7月2日
E-精算インストール説明書.
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとデータ構造 2011年6月28日
ヒープソートの復習 第12回.
アルゴリズムとデータ構造 2013年7月2日
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
pf-6. スタック (Python プログラミング基礎を演習で学ぶシリーズ)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
アルゴリズムとデータ構造 2012年6月25日
2017年度 有限幾何学 期末試験 注意:ループと多重辺がないグラフのみを扱う. 問1 次の定理と,その証明の概略を読み,各問に答えよ.
ヒープソート.
ヒープソート.
第8回 ステップ応答によるシステム同定.
ブレッド・ボードを用いた回路の作成 気温データ・ロガー編.
参考:大きい要素の処理.
プログラミング入門2 第5回 配列 変数宣言、初期化について
知能情報工学演習I 第11回(後半第5回) 課題の回答
プログラミング演習I 補講用課題
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

アルゴリズムとデータ構造 第6回演習解答 2015/11/18実施 アルゴリズムとデータ構造 2015

第6回演習解答(1/3) [問題] 長さnの整数の配列A[0],A[1],...,A[n-1]において、要素の大きい方からm(<n)個だけA[0],A[1],...,A[m-1]に大きい順に格納するアルゴリズムを作りたい。 void heapify(int i,int n,int A[]) /* A[2i+1]とA[2i+2]を根とするヒープ及びA[i]を、 A[i]を根とするヒープに統合する */ { int j; j=2*i+1; /* j:左の子 */ if(j>=n) return; /* 子がない場合は何もしない */ if(j+1<n) { /* 右の子もいる場合 */ if(A[j]>A[j+1]) { /* 右の子と左の子で要素の小さい方をjとする */ j=j+1; } if(A[j]<A[i]) { /* 子の方が小さい場合 */ swap(i,j,A); /* 親子の入れ換え */ heapify(j,n,A); /* A[j]から下がヒープの条件を満たすようにする */ return; void makeheap(int A[],int n) /* A[0],...A[n-1]がヒープを 構成するように並び換える */ { int i; for(i=n/2-1;i>=0;i--) { heapify(i,n,A); } return; void swap(int i,int j,int A[]){ int temp; temp=A[i]; A[i]=A[j]; A[j]=temp; 図1:ヒープを構成するアルゴリズム 2015/11/18実施 アルゴリズムとデータ構造 2015

第6回演習解答(2/3) (a)図1のアルゴリズムを使って次の配列Aがヒープを構成するように並び換えよ。また、そのときのAの要素間の比較回数を求めよ。ただし、makeheap(A,10)を実行したものとする。 7 3 2 8 4 6 1 9 5 7 3 2 4 6 1 9 8 5 7 3 1 4 6 2 9 8 5 7 1 3 4 6 2 9 8 5 7 7 7 ⑪ 7 3 2 3 1 3 2 ⑦ ⑤ 1 ③ ⑩ 8 4 6 1 4 6 2 4 6 1 3 ⑨ 4 6 2 ⑥ ① 9 5 9 8 5 9 8 5 ④ 9 8 5 ② ⑧ 3 1 7 4 6 2 9 8 5 7 1 3 4 6 2 9 8 5 比較回数15回 3 1 7 1 ⑬ 7 ⑮ 4 6 2 3 4 6 2 9 8 5 ⑫ 9 8 5 ⑭ 2015/11/18実施 アルゴリズムとデータ構造 2015

第6回演習解答(3/3) (b)長さnの整数の配列A[0],A[1],...,A[n-1]において、要素の大きい方からm(<n)個だけA[0],A[1],...,A[m-1]に大きい順に格納するプログラムをmakeheapとheapifyの2つの手続きを使ってC言語で書け。ただし、mサイズのヒープしか作らない効率のよいアルゴリズムを考えよ。また、そのアルゴリズムの最悪時間計算量のオーダーを求めよ。 int i; makeheap(A,m); for(i=m;i<n;i++) { if(A[i]>A[0]) { A[0]=A[i]; heapify(0,m,A); } for(i=m-1;i>0;i--) { swap(0,i,A); heapify(0,i,A); O(m) O((n-m)logm) O(nlogm) (<O(nlogn)) O(mlogm) 2015/11/18実施 アルゴリズムとデータ構造 2015