資料庫入門級之演算法 一

2021-06-02 01:59:30 字數 1610 閱讀 8576

對dba來說,演算法很重要。下面和大家一起分享學習(**為c++**)。

折半查詢又稱二分查詢。

使用條件:有序集合。

演算法思想:先確定待查記錄所在的範圍(區間),然後逐步縮小範圍直到找到或者不找到為止。

關鍵點在於比較中間位置所記錄的關鍵字和給定值的比較,如果比給定值大(這裡假設集合從小到大排列)那麼可以縮小區間範圍(集合開始-->中間位置的上一位),在比較該區間的中間位置所記錄的關鍵字與給定值,依次迴圈到找到或者找不到位置。

舉例程式設計:這裡有乙個整數資料 int a[10]=;

1)這是遞迴

//折半查詢

//陣列必須按照一定的順序

//引數:最大,最小,目標(引數型別為整數)

intbinarysearch(intmin,intmax,intnum)   

2)非遞迴

//非遞迴演算法

intbinarysearch_f(intnum) 

return -1;

效能分析:時間複雜度o(logn)

插入排序

使用條件:可對比大小的集合。

演算法思想:將乙個記錄插入到已排好序的有序列中,從而得到乙個新的,記錄數增1的有序序列。待插記錄依次比較已經排好序列,如果序列數大於該待插記錄,那麼該序列往後挪一位,直到找到序列小於待插記錄,那麼此時插入到該序列的後乙個位置,依次上面操作,直至插完位置。

舉例程式設計:int b[10]=將其排序

//插入排序

//這裡temp是哨兵位

//從小到大

voidinsertsort()

else

}b[j+1] = temp;}}

效能分析:時間複雜度o(n^2)

折半插入排序

使用條件:可對比大小的集合。

演算法思想:基本思想與簡單插入排序思想相似,唯一的不同點在於找出插入的位置,簡單插入排序用的是依次比較,這裡折半插入排序改進了,將依次查詢改進成折半查詢

舉例程式設計:int b[10]=將其排序

voidbinaryinsertsort()

for(j = i; j >=max+1; j--)

b[max+1] = temp; } }

效能分析:時間複雜度o(n^2)

雖然這裡時間複雜度與簡單插入排序一樣,但是通過查詢找到插入的位置用的比較次數是明顯減少的。

入門級演算法

今天我想記錄的是一些關於入門級別的演算法。將乙個字串s對映為乙個整數,使得該整數可以唯一的代表字串s。先假設字串均由大寫字母a z構成,不妨設a z為0 25,即將26個大寫字母對應到了二十六進製制中。按照將二十六進製制轉換為十進位制的思路,即可實現將字串對映為整數的需求。題目 給出n個字串 恰好由...

關聯式資料庫入門級概念辨析

一.data database dbms dbs 要認識資料庫,首先要區別 資料 data 資料庫 database,db 資料庫管理系統 database management system,dbms 資料庫系統 database system,dbs 四個概念。資料 資料就不用多說了,描述事物的...

ORACLE資料庫入門級及操作雜記

二.安裝oracle資料庫,安裝過程基本都是傻瓜式安裝,值得注意的是安裝需要選擇為容器資料庫,這個一定要勾選上,否則影響後期建立資料庫 三.資料庫安裝完成後,就是對資料庫的基本操作 新建資料庫,匯入,匯出資料庫 以下簡要介紹對應的操作指令碼 如果以上建立的資料庫如果需要進行ip訪問,需要對其進行配置...