靜態查找表的實現

#ifndef SSTABLE_H
#define SSTABLE_H#include <iostream>
using namespace std;/*************************************************************
SSTable:stastic search table
靜態查找表的模板類實現
順序存儲結構
*************************************************************/template <typename ElemType>
class SSTable
{
private:ElemType *elem;int length;public:SSTable();SSTable(const SSTable &rhs);void clear();const SSTable& operator=(const SSTable &rhs);~SSTable();void create(const ElemType *r, int n);void ascend();void createOrder(const ElemType *r, int n);void show() const;/*模板類中的模板方法@function 從后向前順序查找關鍵字為key的元素@parameter key ElemType中的關鍵字@return 返回關鍵字為key的元素在靜態查找表中的位置,若無關鍵字為key的元素則返回0*/template <typename KeyType>int searchSeq(KeyType key) const{//將key包裝進臨時ElemType對象tmp中ElemType tmp;tmp.key = key;//將0號下標元素置為臨時對象tmp,起哨兵作用elem[0] = tmp;int i = length;while( elem[i].key != elem[0].key)--i;return i;}/*模板類中的模板方法@function 對排序表二分查找關鍵字為key的元素@parameter key ElemType中的關鍵字@return 返回關鍵字為key的元素在靜態查找表中的位置,若無關鍵字為key的元素則返回0*/template <typename KeyType>int searchBin(KeyType key) const{int low = 1;int high = length;while (low <= high){int middle = (high + low) / 2;if (elem[middle].key == key)return middle;else if (elem[middle].key < key)low = middle + 1;elsehigh = middle - 1;}return 0;}
};//默認構造函數
template <typename ElemType>
SSTable<ElemType>::SSTable()
{elem = nullptr;length = 0;
}//復制構造函數
template <typename ElemType>
SSTable<ElemType>::SSTable(const SSTable &rhs)
{length = rhs.length;elem = (ElemType *)calloc(length+1, sizeof(ElemType));for (int i = 1; i <= length; ++i)elem[i] = rhs.elem[i];
}//置空函數
template <typename ElemType>
void SSTable<ElemType>::clear()
{if (elem != nullptr)free(elem);elem = nullptr;length = 0;
}/*
*賦值函數
*@call clear()
*/
template <typename ElemType>
const SSTable<ElemType>& SSTable<ElemType>::operator=(const SSTable &rhs)
{clear();elem = (ElemType *)calloc(length);for (int i = 1; i <= length; ++i)elem[i] = rhs.elem[i];length = rhs.length;
}//析構函數
template <typename ElemType>
SSTable<ElemType>::~SSTable()
{clear();
}/*
*@function 根據一個大小為n的ElemType型數組,初始化SSTable對象
*@parameter r 一個ElemType型的數組
*@parameter n  數組r的大小
*/
template <typename ElemType>
void SSTable<ElemType>::create(const ElemType *r, int n)
{//分配大小為n+1的數組,0號位置不放元素elem = (ElemType *)calloc(n + 1, sizeof(ElemType));if (elem == nullptr)exit(-1);for (int i = 0; i < n; ++i)elem[i+1] = r[i];length = n;
}//將elem指向的數組進行比較排序,遞增
template <typename ElemType>
void SSTable<ElemType>::ascend()
{int index;for (int i = 1; i <= length; ++i){index = i;for (int j = i + 1; j <= length; ++j)if (elem[j].key < elem[index].key)index = j;ElemType tmp = elem[i];elem[i] = elem[index];elem[index] = tmp;}
}/*
*@function 根據一個大小為n的ElemType型數組,初始化SSTable對象,SSTable中elem所指向的數組為遞增排序
*@call create(const ElemType *r, int n)
*@call ascend()
*@parameter r 一個ElemType型的數組
*@parameter n  數組r的大小
*/
template <typename ElemType>
void SSTable<ElemType>::createOrder(const ElemType *r, int n)
{create(r, n);ascend();
}//將elem指向的數組輸出到控制臺
template <typename ElemType>
void SSTable<ElemType>::show() const
{for (int i = 1; i <= length; ++i)cout << elem[i].key << " ";cout << endl;
}#endif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(轉)javascript匿名函數

文章來源: http://hi.baidu.com/koen_li/blog/item/4b14e4fc0c9b140c08244d8c.html 匿名函數的寫法 顧名思義&#xff0c;就是沒有名字的函數&#xff08;⊙﹏⊙b汗&#xff09;。匿名函數通常用于javascript作用域的控制&#xff0c;可以有效的避免對全局變量的污染。常見的匿…

BZOJ3307 雨天的尾巴

題目鏈接&#xff1a;戳我 樹上鏈修改->差分 每一個節點都開一個權值線段樹&#xff0c;最后從下往上合并qwq 代碼如下&#xff1a; #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #define MA…

主成分分析(PCA)原理詳解 2016/12/17 · IT技術 · 主成分分析, 數學 分享到: 21 原文出處: 中科春哥 一、PCA簡介 1. 相關背景 主成分分析(Principa

主成分分析&#xff08;PCA&#xff09;原理詳解 2016/12/17 IT技術 主成分分析, 數學 分享到&#xff1a;21原文出處&#xff1a; 中科春哥 一、PCA簡介 1. 相關背景 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c; 是一種統…

1 Hadoop簡介

1.1 什么是Hadoop 分布式計算平臺 優點&#xff1a; 高可靠性 高擴展性 高效性 在各節點之間動態地移動數據&#xff0c;保證各個節點的動態平衡 高容錯性 數據多副本&#xff1b;重新啟動失敗任務 Hadoop應用&#xff1a; Yahoo 廣告系統Web搜索研究 Facebook 數據分…

Google Xpath Helper

Google Xpath Helper 下載方法&#xff1a; 1. 訪問http://chrome-extension-downloader.com/ 2. 把https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl拷貝到文本框里面&#xff0c;然后點擊“Download Extention”按鈕。 使用方法&am…

【Tensorflow】 Object_detection之訓練PASCAL VOC數據集

參考&#xff1a;Running Locally 1、檢查數據、config文件是否配置好 可參考之前博客&#xff1a; Tensorflow Object_detection之配置Training Pipeline Tensorflow Object_detection之準備數據生成TFRecord 2、訓練模型 PIPELINE_CONFIG_PATH/data/zxx/models/research/date…

2 Hadoop的安裝與配置

需要JDK、SSH 對于偽分布式&#xff0c;Hadoop會采取與集群相同的處理方式&#xff1a;按次序啟動文件conf/slaves中記載的主機上的進程&#xff0c;只不過在偽分布式中Slave為localhost&#xff08;自身&#xff09;。 Hadoop從三個角度將主機劃分為兩種角色&#xff1a; 最…

局域網訪問控制

訪問局域網內其他機器可用如下方式&#xff1a; \\PC-name\d$\dir 或者 \\192.168.xxx.xxx\d$\dir d代表d盤 但前提是對方機器已經把本機用戶設置為管理員賬戶轉載于:https://www.cnblogs.com/jimmy-c/p/4116804.html

Unity3d 插值同步

文中大體的思路&#xff1a; A玩家 移動時&#xff0c;本機自行移動&#xff0c;并發送移動指令給服務端&#xff0c;假設移動是成功的&#xff0c;服務端同步其他客戶端 B玩家&#xff0c;B玩家 中用一個隊列 Queue 來裝服務端來的移動指令&#xff0c;然后客戶端在updata中做…

laravel數據庫相關操作說明

輸出原生sql: DB::table(users)->where([[name,,張三]])->toSql(); //輸出sql為&#xff1a;select * from users where name?; DB::table(users)->where([[name,,張三]])->getQuery(); //輸出sql為&#xff1a;select * from users where name張三; 運行原生sql查…

1 數據挖掘基礎

1.1 什么是數據挖掘 從大量數據中挖掘出隱含的、未知的、對決策有潛在價值的關系、模式和趨勢&#xff0c;并用這些知識和規則建立用于決策支持的模型&#xff0c;提供預測性決策支持的方法、工具和過程&#xff0c;這就是數據挖掘。 是統計學、數據庫技術、人工智能技術的結…

R文件報錯的原因

一般R文件報錯&#xff0c;無非是資源文件錯誤&#xff0c;圖片命名錯誤&#xff0c;但是編譯都會報錯&#xff0c;可以很快解決。但是前幾天&#xff0c;引入一個第三方aar包后&#xff0c;項目編譯正確&#xff0c;但是就是R文件報錯&#xff0c;找不到R文件&#xff0c;整個…

1.0 算法本機調試方法

算法的本機調試方法&#xff1a; 從本地文件中讀取測試數據&#xff0c;進行算法調試。 例&#xff1a;讀取兩個數&#xff0c;輸出和。 1 2 11 22 111 222 輸出&#xff1a; 3 33 333 #include <fstream> //讀取本地文件需要此頭文件。調試完成后&#xff0c;提…

[轉]Excel數據轉化為sql腳本

在實際項目開發中&#xff0c;有時會遇到客戶讓我們把大量Excel數據導入數據庫的情況。這時我們就可以通過將Excel數據轉化為sql腳本來批量導入數據庫。 1 在數據前插入一列單元格&#xff0c;用來拼寫sql語句。 具體寫法&#xff1a;"insert into t_student (id,name,age…

void Update ( ) 更新 void FixedUpdate ( )

void Update ( ) 更新 void FixedUpdate ( ) 固定更新 相同點&#xff1a;當MonoBehaviour啟用時&#xff0c;其在每一幀被調用&#xff0c;都是用來更新的。 異同點&#xff1a;第一點不同&#xff1a; Update()每一幀的時間不固定&#xff0c;即第一幀與第二幀的時間間隔t…

海量數據庫的查詢優化及分頁算法方案(一)

隨著“金盾工程”建設的逐步深入和公安信息化的高速發展&#xff0c;公安計算機應用系統被廣泛應用在各警種、各部門。與此同時&#xff0c;應用系統體系的核心、系統數據的存放地――數據庫也隨著實際應用而急劇膨脹&#xff0c;一些大規模的系統&#xff0c;如人口系統的數據…

【點分治】luoguP2664 樹上游戲

應該是一道中等難度的點分&#xff1f;麻煩在一些細節。 題目描述 lrb有一棵樹&#xff0c;樹的每個節點有個顏色。給一個長度為n的顏色序列&#xff0c;定義s(i,j) 為i 到j 的顏色數量。以及 現在他想讓你求出所有的sum[i] 輸入輸出格式 輸入格式&#xff1a; 第一行為一個整數…

EasyJoyStick使用以及兩種操作桿 EasyJoyStick的使用方法,簡單的不能再簡單 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#

EasyJoyStick使用以及兩種操作桿EasyJoyStick的使用方法&#xff0c;簡單的不能再簡單Hedgehog Team-》Easy Touch -》Add Easy Touch For C#Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick配置如圖&#xff1a;然后看一下配置&#xff0c;我喜歡掌控性強一…

2.1 vector

表結構的數組實現隨機訪問快速尾插動態調整所占內存空間#include<vector>從0開始計數創建vector對象的三種方法&#xff1a; 1. vector<int> v;2. vector<int> v(10); //默認值為03. vecotr<double> v(10,8.6); //為每個元素指定初始值尾插&#xff1a…

文件系統管理 之 文件和目錄訪問權限設置

一、文件和目錄權限概述 在linux中的每一個文件或目錄都包含有訪問權限&#xff0c;這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 通過設定權限可以從以下三種訪問方式限制訪問權限&#xff1a;只允許用戶自己訪問&#xff1b;允許一個預先指定的用戶組中的用戶訪問&…