freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)2清華大學(xué)ppt-在線瀏覽

2025-03-09 06:33本頁面
  

【正文】 } }。 即 ? 矩陣 A 的行成為矩陣 B 的列 ? 矩陣 A 的列成為矩陣 B 的行。當(dāng)行號(hào)相同時(shí),按列號(hào)遞增的順序存放。 33 0000280000000091039000000006000017000110150022022?????????????????????稀疏矩陣 行行(( rr oo w )) 列列(( cc oo ll )) 值值(( vv aa ll uu ee )) [0 ] 00 33 22 22 [1 ] 00 66 11 55 [2 ] 11 11 11 11 [3 ] 11 55 11 77 [4 ] 22 33 66 [5 ] 33 55 33 99 [6 ] 44 00 99 11 [7 ] 55 22 22 8834 ???????????????????????0000015003901700000000006022280000000001100910000 轉(zhuǎn)置矩陣 行行(( rr oo ww )) 列列(( cc oo ll )) 值值(( vv aa ll uu ee )) [0] 00 44 99 11 [1] 11 11 11 11 [2] 22 55 22 88 [3] 33 00 22 22 [4] 33 22 66 [5] 55 11 11 77 [6] 55 33 33 99 [7] 66 00 11 6635 用三元組表表示的稀疏矩陣及其轉(zhuǎn)置 行 (row) 列 (col) 值 (value) 行 (row) 列 (col) 值 (value) [0] 0 3 22 [0] 0 4 91 [1] 0 6 15 [1] 1 1 11 [2] 1 1 11 [2] 2 5 28 [3] 1 5 17 [3] 3 0 22 [4] 2 3 6 [4] 3 2 6 [5] 3 5 39 [5] 5 1 17 [6] 4 0 91 [6] 5 3 39 [7] 5 2 28 [7] 6 0 16 原矩陣三元組表 轉(zhuǎn)置矩陣三元組表 36 稀疏矩陣轉(zhuǎn)置算法思想 ? 設(shè)矩陣列數(shù)為 Cols,對(duì)矩陣三元組表掃描Cols 次。 ? 第 k 次掃描找尋所有列號(hào)為 k 的項(xiàng),將其行號(hào)變列號(hào)、列號(hào)變行號(hào),順次存于轉(zhuǎn)置矩陣三元組表。 B) { //轉(zhuǎn)置 this矩陣,轉(zhuǎn)置結(jié)果由 B返回 = Cols。 = Terms。 //轉(zhuǎn)置三元組表存放指針 int i, k。 k Cols。 i Terms。 [CurrentB].col = smArray[i].row。 CurrentB++。 39 快速轉(zhuǎn)置算法 ? 設(shè)矩陣三元組表總共有 t 項(xiàng),上述算法的時(shí)間代價(jià)為 O ( n* t )。 ? 若矩陣有 200 行, 200 列, 10,000 個(gè)非零元素,總共有 2,000,000 次處理。 40 ? 為加速轉(zhuǎn)置速度,建立輔助數(shù)組 rowSize 和 rowStart: ? rowSize記錄矩陣轉(zhuǎn)置前各列,即轉(zhuǎn)置矩陣各行非零元素個(gè)數(shù); ? rowStart記錄各行非零元素在轉(zhuǎn)置三元組表中開始存放位置。 41 [0] [1] [2] [3] [4] [5] [6] 語 義 rowSize 1 1 1 2 0 2 1 矩陣 A 各列非 零元素個(gè)數(shù) rowStart 0 1 2 3 5 5 7 矩陣 B 各行開 始存放位置 A三元組 (0) (1) (2) (3) (4) (5) (6) (7) 行 row 0 0 1 1 2 3 4 5 列 col 3 6 1 5 3 5 0 2 值 value 22 15 11 17 6 39 91 28 42 稀疏矩陣的快速轉(zhuǎn)置算法 template class E void SparseMatrixE:: FastTranspos (SparseMatrixEamp。 //列元素?cái)?shù)數(shù)組 int *rowStart = new int[Cols]。 = Rows。 if (Terms 0) { int i, j。 i Cols。 43 for (i = 0。 i++) rowSize[smArray[i].col]++。 for (i = 1。 i++) rowStart[i] = rowStart[i1]+rowSize[i1]。 i Terms。 [j].row = smArray[i].col。 [j].value = smArray[i].value。 } 44 } delete [ ] rowSize。 } 帶行指針數(shù)組的二元組表 ? 稀疏矩陣的三元組表可以用帶行指針數(shù)組的二元組表代替。第 i 個(gè)元素的下標(biāo) i 代表矩陣的第 i 行,元素的內(nèi)容即為稀疏矩陣第 i 行的第一個(gè)非零元素在二元組表中的存放位置 。 ??????????????????????0020220000000000080000300040140000000130011012 行指針數(shù)組 row 0 0 1 3 2 4 3 6 4 7 5 7 二元組表 data col value 0 0 12 1 2 11 2 5 13 3 6 14 4 1 4 5 5 3 6 3 8 7 1 9 8 4 2 46 字符串 (String) ? 字符串是 n ( ? 0 ) 個(gè)字符的有限序列, 記作 S : “c1c2c3…c n” 其中, S 是串名字 “ c1c2c3…c n”是串值 ci 是串中字符 n 是串的長(zhǎng)度, n = 0 稱為 空串 。 ? 注意: 空串 和 空白串 不同,例如 “ ” 和 “” 分別表示長(zhǎng)度為 1的空白串和長(zhǎng)度為 0的空串。 ? 通常將子串在主串中首次出現(xiàn)時(shí),該子串首字符對(duì)應(yīng)的主串中的序號(hào),定義為子串在主串中的位置。 B 在 A 中出現(xiàn)了兩次,首次出現(xiàn)所對(duì)應(yīng)的主串位置是 2(從0開始)。 ? 特別地,空串是任意串的子串,任意串是其自身的子串。 ? 串常量在程序中只能被引用但不能改變它的值,即只能讀不能寫。但有的語言允許對(duì)串常量命名,以使程序易讀、易寫。 ? 這里 path是一個(gè)串常量。 49 字符串的類定義 ifndef ASTRING_H //定義在文件“ ”中 define ASTRING_H define defaultSize = 128。 private: char *ch。 //串的實(shí)際長(zhǎng)度 int maxSize。 //構(gòu)造函數(shù) AString(const char *init )。 ob)。 } //析構(gòu)函數(shù) int Length() const { return curLength。 operator() (int pos, int len)。 ob) const { return strcmp (ch, ) == 0。 ob) const { return strcmp (ch, ) != 0。 } //判串空否。 operator = (AStringamp。 //串賦值 AStringamp。 ob)。 operator [ ] (int i)。 pat, int k) const。 52 字符串的構(gòu)造函數(shù) AString::AString(int sz) { //構(gòu)造函數(shù):創(chuàng)建一個(gè)空串 maxSize = sz。 //創(chuàng)建串?dāng)?shù)組 if (ch == NULL) { cerr “存儲(chǔ)分配錯(cuò) !\n”。 } curLength = 0。 }。 maxSize = (len defaultSize) ? len : defaultSize。 //創(chuàng)建串?dāng)?shù)組 if (ch == NULL) { cerr “存儲(chǔ)分配錯(cuò) ! \n”。 } curLength = len。 //復(fù)制串值 }; 54 字符串的復(fù)制構(gòu)造函數(shù) AString :: AString(const AStringamp。 //復(fù)制串最大長(zhǎng)度 ch = new char[curLength+1]。 exit(1)。 //復(fù)制串長(zhǎng)度 strcpy(ch, )。 55 字符串重載操作的使用示例 序 號(hào) 重載操作 操作 使用示例 (設(shè)使用操作的當(dāng)前串為 S:‘ tsinghua?) 1 ( ) (int pos, int len) 取子串 S1 = S(3, 2), //S1結(jié)果為 ‘ ng? 2 == (const AStringamp。 ob) 判兩串 不等 S != S1 , //若 S與 S1不等, 結(jié)果為 true,否則為 false 4 ! () 判串空 否 !S , //若串 S為空,結(jié)果為 true,否則為 false 56 序 號(hào) 重載操作 操作 使用示例 (設(shè)使用操作的當(dāng)前串為 S:‘ tsinghua?) 5 = (const AStringamp。 ob) 串連接 若設(shè) S1為‘ university?, 執(zhí)行 S += S1, //S結(jié)果為‘ tsinghua university? 7 [ ] (int i) 取第 i 個(gè)字符 S[5], //取出字符為‘ h? 57 提取子串的算法示例 pos+len1 pos+len 1 ? curLen1 ? curLen 可以全部提取 只能從 pos取到串尾 i n f i n i t y i n f i n i t y pos = 2, len = 3 pos = 5, len = 4 f i n i t y 超出 58 串重載操作: 提取子串 AString AString::operator () (int pos, int len) { //從串中第 pos 個(gè)位置起連續(xù)提取 len 個(gè)字符形成 //子串返回 AString temp。amp。amp。 //調(diào)整提取字符數(shù) = len。 i len。 //傳送串?dāng)?shù)組 [len] = ?\0?。 }。 AString::operator = (const AStri
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1