• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: 哈工大  计科  

资源简介

这个是哈尔滨工业大学计科专业数据库实验四的源码。实验要求是模拟数据库的物理实现。在使用前请先参考我的博客,里面有使用说明。

资源截图

代码片段和文件信息

# coding=utf8


from Memory import Memory

path_select1 = ‘result/select1.txt‘
path_select2 = ‘result/select2.txt‘
path_project = ‘result/project.txt‘
path_join1 = ‘result/join1.txt‘
path_join2 = ‘result/join2.txt‘
path_join3 = ‘result/join3.txt‘
path_bing = ‘result/bing.txt‘
path_jiao = ‘result/jiao.txt‘
path_cha = ‘result/cha.txt‘


##线性查找
def linear_search():
    output = open(path_select1 ‘w‘)

    output.write(‘R: \n‘)
    for i in range(100):
        mr.load(0 i)
        for t in mr.buffer[0]:
            if t[0] == 40:
                output.write(str(t[0]) + ‘ ‘ + str(t[1]) + ‘\n‘)
    output.write(‘S: \n‘)
    for i in range(200):
        ms.load(0 i)
        for t in ms.buffer[0]:
            if t[0] == 60:
                output.write(str(t[0]) + ‘ ‘ + str(t[1]) + ‘\n‘)
    output.close()

##二分查找
def binary_search():
    m = []
    output = open(path_select2 ‘w‘)

    for i in range(100):
        mr.load(0 i)
        m.extend(mr.buffer[0])

    sort_r = sorted(m key=lambda t: t[0])

    low = 0
    high = len(sort_r) - 1

    output.write(‘R: \n‘)
    while low <= high:
        mid = (low + high) / 2
        if sort_r[mid][0] == 40:
            output.write(str(sort_r[mid][0]) + ‘ ‘ + str(sort_r[mid][1]) + ‘\n‘)

            tail = mid + 1
            while tail < len(sort_r) and sort_r[tail][0] == 40:
                output.write(str(sort_r[tail][0]) + ‘ ‘ + str(sort_r[tail][1]) + ‘\n‘)
                tail += 1

            head = mid - 1
            while head > 0 and sort_r[head][0] == 40:
                output.write(str(sort_r[head][0]) + ‘ ‘ + str(sort_r[head][1]) + ‘\n‘)
                head -= 1
            break

        elif sort_r[mid][0] < 40:
            low = mid + 1
        else:
            high = mid - 1

    m = []

    for i in range(200):
        ms.load(0 i)

        m.extend(ms.buffer[0])

    sort_s = sorted(m key=lambda t: t[0])

    low = 0
    high = len(sort_s) - 1

    output.write(‘S: \n‘)
    while low <= high:
        mid = (low + high) / 2
        if sort_s[mid][0] == 60:
            output.write(str(sort_s[mid][0]) + ‘ ‘ + str(sort_s[mid][1]) + ‘\n‘)

            tail = mid + 1
            while tail < len(sort_s) and sort_s[tail][0] == 60:
                output.write(str(sort_s[tail][0]) + ‘ ‘ + str(sort_s[tail][1]) + ‘\n‘)
                tail += 1

            head = mid - 1
            while head > 0 and sort_s[head][0] == 60:
                output.write(str(sort_s[head][0]) + ‘ ‘ + str(sort_s[head][1]) + ‘\n‘)
                head -= 1
            break
        elif sort_s[mid][0] < 60:
            low = mid + 1
        else:
            high = mid - 1

    output.close()


##投影操作
def project():
    output = open(path_project ‘w‘)
    output.write(‘R: \n‘)
    m=[]
    for i in range(100):
        mr.load(0 i)
        for t in mr.buffer[0]:
            m.append(t[0])
    m

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7496  2018-07-03 13:34  实验四\lab4.py

     文件       3114  2018-07-01 16:17  实验四\Memory.py

     目录          0  2018-07-03 22:05  实验四

----------- ---------  ---------- -----  ----

                10610                    3


评论

共有 条评论