




已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
南京信息工程大學(xué) 算法設(shè)計與分析 實驗(實習(xí))報告實驗(實習(xí))名稱 實驗1 遞歸與分治策略 實驗(實習(xí))日期 2016.10 得分 指導(dǎo)老師 宣文霞 系 計算機(jī) 專業(yè) 網(wǎng)絡(luò)工程 班級 2 姓名 劉信言 學(xué)號 20142346074 1. 實驗?zāi)康?) Hanoi塔問題2) Strassen矩陣乘法3) 合并排序(Merge Sort)4) 快速排序(Quick Sort)2. 實驗內(nèi)容及分析設(shè)計過程:1)Hanoi塔問題import java.util.Scanner;public class Hanoi public static void hanoi(int number,char A,char B,char C) if(number=1) System.out.println(A+-+C); return; hanoi(number-1,A,C,B); hanoi(1,A,B,C); hanoi(number-1,B,A,C); public static void main(String args) Scanner input =new Scanner(System.in); int n= input.nextInt(); hanoi(n,A,B,C); 2)Strassen矩陣乘法import java.util.*;public class Strassenpublic Strassen()A = new intNUMBERNUMBER;B = new intNUMBERNUMBER;C = new intNUMBERNUMBER;public void input(int a)Scanner scanner = new Scanner(System.in);for(int i = 0; i a.length; i+) for(int j = 0; j ai.length; j+) aij = scanner.nextInt();public void output(int resault)for(int b : resault) for(int temp : b) System.out.print(temp + );System.out.println();public void Mul(int first, int second, int resault)for(int i = 0; i 2; +i) for(int j = 0; j 2; +j) resaultij = 0;for(int k = 0; k 2; +k) resaultij += firstik * secondkj;public void Add(int first, int second, int resault)for(int i = 0; i first.length; i+) for(int j = 0; j firsti.length; j+) resaultij = firstij + secondij;public void sub(int first, int second, int resault)for(int i = 0; i first.length; i+) for(int j = 0; j firsti.length; j+) resaultij = firstij - secondij;public void strassen(int A, int B, int C)/定義一些中間變量int M1=new int NUMBERNUMBER;int M2=new int NUMBERNUMBER;int M3=new int NUMBERNUMBER;int M4=new int NUMBERNUMBER;int M5=new int NUMBERNUMBER;int M6=new int NUMBERNUMBER;int M7=new int NUMBERNUMBER;int C11=new int NUMBERNUMBER;int C12=new int NUMBERNUMBER;int C21=new int NUMBERNUMBER;int C22=new int NUMBERNUMBER;int A11=new int NUMBERNUMBER;int A12=new int NUMBERNUMBER;int A21=new int NUMBERNUMBER;int A22=new int NUMBERNUMBER;int B11=new int NUMBERNUMBER;int B12=new int NUMBERNUMBER;int B21=new int NUMBERNUMBER;int B22=new int NUMBERNUMBER;int temp=new int NUMBERNUMBER;int temp1=new int NUMBERNUMBER;if(A.length=2)Mul(A, B, C);else/首先將矩陣A,B 分為4塊for(int i = 0; i A.length/2; i+) for(int j = 0; j A.length/2; j+) A11ij=Aij;A12ij=Aij+A.length/2;A21ij=Ai+A.length/2j;A22ij=Ai+A.length/2j+A.length/2;B11ij=Bij;B12ij=Bij+A.length/2;B21ij=Bi+A.length/2j;B22ij=Bi+A.length/2j+A.length/2;/計算M1sub(B12, B22, temp);Mul(A11, temp, M1);/計算M2Add(A11, A12, temp);Mul(temp, B22, M2);/計算M3Add(A21, A22, temp);Mul(temp, B11, M3);/M4sub(B21, B11, temp);Mul(A22, temp, M4);/M5Add(A11, A22, temp1);Add(B11, B22, temp);Mul(temp1, temp, M5);/M6sub(A12, A22, temp1);Add(B21, B22, temp);Mul(temp1, temp, M6);/M7sub(A11, A21, temp1);Add(B11, B12, temp);Mul(temp1, temp, M7);/計算C11Add(M5, M4, temp1);sub(temp1, M2, temp);Add(temp, M6, C11);/計算C12Add(M1, M2, C12);/C21Add(M3, M4, C21);/C22Add(M5, M1, temp1);sub(temp1, M3, temp);sub(temp, M7, C22);/結(jié)果送回C中for(int i = 0; i C.length/2; i+) for(int j = 0; j C.length/2; j+) Cij=C11ij;Cij+C.length/2=C12ij;Ci+C.length/2j=C21ij;Ci+C.length/2j+C.length/2=C22ij;public static void main(String args)Strassen demo=new Strassen();System.out.println(輸入矩陣A);demo.input(A);System.out.println(輸入矩陣B);demo.input(B);demo.strassen(A, B, C);demo.output(C);private static int A;private static int B;private static int C;private final static int NUMBER = 4;3)合并排序(Merge Sort)public class MergeSort2 public static void merge(int a, int p, int q, int r)int l1 = q-p+1;int l2 = r-q;int array1 = new intl1 + 1;int array2 = new intl2 + 1;for(int i = 0; il1; i+)array1i = ap+i;for(int i = 0; il2; i+)array2i= aq+1+i; array1l1 = Integer.MAX_VALUE;array2l2 = Integer.MAX_VALUE;int i = 0;int j = 0;for(int k = p; k=r; k+)if(array1i = array2j )ap+= array1i;i+;elseap+= array2j;j+;public static void mergeSort(int a, int low, int high)if(low = high)return;elseint poi = (low + high)/2;mergeSort(a, low, poi);mergeSort(a, poi + 1, high);merge(a, low, poi, high);public static void main(String args) int array = 1,3,6,4,6,4,8,3,8,3,0;mergeSort(array, 0, array.length - 1);for(int i = 0; iarray.length; i+)System.out.print(arrayi + );4)快速排序(Quick Sort)public class QuickSort public static int partition(inta, int p, int q)int key = aq;int i = p-1;for(int j = p; j=q - 1; j+)if(aj = key)i = i + 1;int temp = ai;ai= aj;aj= temp; aq = ai+1;/這句話漏掉了ai+1 = key;return i+1;public static void quickSort(int a, int p, int q)if(pq)int poi = partition(a, p, q);quickSort(a, p, poi -1 );quickSort(a, poi + 1, q);public static void main(String args) int a= 3,5,2,4,6,1,9,8,7,4;quickSort(a, 0, a.length - 1);for(int i = 0; ia.length; i+)System.out.pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保設(shè)備制作培訓(xùn)課件
- 航空航天復(fù)合材料 課件 第6章 燒蝕防熱復(fù)合材料朱和國
- 早產(chǎn)兒的治療及護(hù)理
- 餐飲行業(yè)知名品牌收購與經(jīng)營權(quán)協(xié)議
- 企業(yè)財務(wù)風(fēng)險管理與內(nèi)部控制體系建設(shè)合同
- 餐飲企業(yè)大堂經(jīng)理職位競聘與培養(yǎng)協(xié)議
- 拆遷補(bǔ)償與二手房買賣合同風(fēng)險評估與解決方案合同
- 幼兒園考勤制度崗前培訓(xùn)
- 水稻專用肥采購合同及技術(shù)指導(dǎo)服務(wù)協(xié)議
- 高新區(qū)股權(quán)交易糾紛解決及股權(quán)轉(zhuǎn)讓合同
- 2025年新疆中考數(shù)學(xué)試卷真題
- 國內(nèi)在線教育的發(fā)展?fàn)顩r研究論文3000字
- 合肥長鑫存儲在線測評題2024
- 每天100道語法填空題過高考英語高頻詞匯12
- 配電室巡檢記錄表
- 數(shù)字程控交換機(jī)系統(tǒng)技術(shù)規(guī)范書
- 卓越績效評價準(zhǔn)則概述(專業(yè)性權(quán)威性實用性)
- GB 1886.20-2016食品安全國家標(biāo)準(zhǔn)食品添加劑氫氧化鈉
- 國資進(jìn)場交易工作流程講座
- 當(dāng)代法律英語翻譯全
- 下承式鋼桁梁橋結(jié)構(gòu)設(shè)計及優(yōu)化 (跨度64m)
評論
0/150
提交評論