数据结构课程设计——综合查找算法的实现.
数据结构查找算法的实现

数据结构查找算法的实现引言在计算机科学中,数据结构是一种用来组织和存储数据的方式,而查找算法则是在数据结构中有效地搜索指定的数据项。
数据结构和查找算法是计算机科学中的重要概念,掌握了它们可以帮助我们更好地处理和利用数据。
本文将详细介绍不同类型的数据结构查找算法的实现方法。
二分查找算法二分查找算法是一种高效的查找算法,它适用于有序数组中查找指定元素。
该算法通过将数组分为两半来逐步寻找目标元素,直到找到目标元素或确定目标元素不存在。
下面是二分查找算法的实现步骤:1.初始化左指针left和右指针right分别指向数组的第一个元素和最后一个元素。
2.计算中间指针mid,即mid = (left + right) / 2。
3.如果中间元素等于目标元素,则返回中间索引。
4.如果中间元素大于目标元素,则将右指针right更新为mid - 1。
5.如果中间元素小于目标元素,则将左指针left更新为mid + 1。
6.重复步骤2到步骤5,直到找到目标元素或确定目标元素不存在。
二分查找算法的时间复杂度为O(log n),其中n为数组的长度。
哈希表查找算法哈希表是一种将键和值进行映射的数据结构,它可以通过哈希函数将键转换为对应的哈希码,并根据哈希码快速访问值。
哈希表查找算法适用于大规模数据集中的高效搜索。
下面是哈希表查找算法的实现步骤:1.构建哈希表,并根据数据集中的每个元素计算哈希码。
2.将每个元素插入到对应的哈希桶中。
3.当需要查找元素时,根据元素的哈希码定位到对应的哈希桶。
4.在哈希桶中使用线性探测或链表等方式查找目标元素。
5.如果找到目标元素,则返回该元素的值;如果未找到目标元素,则返回空值。
哈希表查找算法的时间复杂度通常为O(1),具有快速查找的特点。
然而,在哈希冲突的情况下,查找时间可能会增加。
二叉搜索树查找算法二叉搜索树是一种特殊的二叉树,它满足左节点小于父节点,右节点大于父节点的条件。
二叉搜索树查找算法适用于快速查找任意元素,并在对数据进行插入和删除操作时保持树的平衡。
数据结构与算法——查找方法综合实例

查找方法综合实例1.问题描述任意给出一组关键字序列,如{34, 44, 43, 12, 53, 55, 73, 64, 77},n=9。
应用常用的查找方法——顺序查找和二分查找方法进行查找。
2.设计要求编写完整的可运行程序。
要求使用菜单的方式,使用户可以任意选择查找方法进行查找给定的关键字,并输出查找后的结果。
3.数据结构typedef int Keytype;typedef struct{Keytype key;…} SElemType;typedef struct{SElemType *elem;int length;} SeqTable;4.源代码#include <stdio.h>#define MAXSIZE 11typedef int Keytype;typedef struct{Keytype key;} SElemType;typedef struct{SElemType *elem; //数据元素存储空间基址int length; //表的长度} SeqTable;void Print(SElemType r[],int n){int i;for(i=1;i<=n;i++)printf("%3d",r[i]);printf("\n");}//冒泡排序void BubbleSort(SElemType r[],int n)//对表中的第1到第n个记录进行冒泡排序,r[0]为临时交换空间{int i,j,Exchanged;for(i=1;i<=n;i++){Exchanged=0; //Exchanged=0未发生交换for(j=1;j<n-i;j++)if(r[j].key>r[j+1].key){r[0]=r[j];r[j]=r[j+1];r[j+1]=r[0];Exchanged=1; //Exchanged=1发生交换}if(Exchanged==0) //若未交换,排序结束break;}Print(r,n);}//顺序查找int SearchSeq(SeqTable ST,Keytype key)//在顺序表ST中顺序查找其关键字key的数据元素{int i;ST.elem[ST.length].key=key; //监视哨for(i=1;ST.elem[i].key!=key;i++);if(i<ST.length)return i;elsereturn -1;}//折半查找int SearchBin(SeqTable ST,Keytype key)//在有序表ST中折半查找其关键字key的数据元素{int low,high,mid;low=1;high=ST.length-1;while(low<=high){mid=(low+high)/2;if(key==ST.elem[mid].key) //找到待查元素return mid;else if(key<ST.elem[mid].key)//继续在前半区间进行查找high=mid-1;else //继续在后半区间进行查找low=mid+1;}return -1; //顺序表中不存在待查元素}void Menu(){printf("***********************************************\n");printf("1.顺序查找\n");printf("2.二分查找\n");printf("3.退出程序\n");printf("***********************************************\n"); }void main(){SeqTable ST;Keytype key;int index,i;SElemType Data[MAXSIZE]={0,34,44,43,12,53,55,73,64,77};ST.elem=Data;ST.length=10;printf("待查找序列为:");Print(Data,9);Menu();scanf("%d",&i);while(i!=3){switch(i){case 1:printf("顺序查找法:\n");printf("请输入待查找的关键字:");scanf("%d",&key);index=SearchSeq(ST,key);if(index==-1)printf("序列中不存在关键字为%d的元素!\n");elseprintf("关键字为%d的元素是查找表中第%d个元素!\n",key,index);break;case 2:printf("二分查找法:\n");printf("因为二分查找法必须是有序序列,所以应先对查找序列排序:\n");BubbleSort(Data,9);printf("请输入待查找的关键字:");scanf("%d",&key);index=SearchBin(ST,key);if(index==-1)printf("序列中不存在关键字为%d的元素!\n");elseprintf("关键字为%d的元素是查找表中第%d个元素!\n",key,index);break;default:printf("按键错误!\n");}printf("\n");Menu();scanf("%d",&i);}}6.结果。
数据结构实验五---查找的实现

实验五查找得实现一、实验内容1、建立一个线性表,对表中数据元素存放得先后次序没有任何要求.输入待查数据元素得关键字进行查找。
为了简化算法,数据元素只含一个整型关键字字段,数据元素得其余数据部分忽略不考虑.建议采用前哨得作用,以提高查找效率。
2、查找表得存储结构为有序表,输入待查数据元素得关键字利用折半查找方法进行查找.此程序中要求对整型量关键字数据得输入按从小到大排序输入。
二、源代码与执行结果1、#include〈iostream>using namespace std;#define MAX 100#define KeyType inttypedef struct{KeyType key ;}DataType;typedef struct{ﻩDataType elem[MAX] ;intlength ;}SeqTable ,*PSeqTable ;PSeqTable Init_SeqTable(){ﻩPSeqTable p =(PSeqTable)malloc(sizeof(SeqTable)) ;ﻩif(p !=NULL){p->length = 0 ;ﻩreturnp;}ﻩelse{ﻩcout〈<"Outof space!”〈〈endl ;ﻩreturn NULL;ﻩ}}int insert_SeqTable(PSeqTable p,KeyType x){if(p->length〉= MAX)ﻩ{ﻩcout〈<”overflow!"<<endl ;ﻩreturn 0 ;ﻩ}p—>elem[p—>length]、key= x ;p-〉length++;return 1 ;}int SeqSearch(SeqTable s ,KeyTypek){ﻩint n , i = 0;ﻩn = s、length ;s、elem[n]、key =k ;ﻩwhile(s、elem[i]、key != k)ﻩﻩi ++ ;ﻩif(i == n)return —1 ;elseﻩﻩreturn i ;}voidmain(){PSeqTable p ;inti , n;ﻩKeyType a ;p =Init_SeqTable();ﻩcout<〈"请输入数据个数:" ;cin>>n ;cout〈<"请输入数据:”<〈endl ;for(i = 0 ; i< n ;i++)ﻩ{ﻩcin〉>a ;ﻩinsert_SeqTable(p , a);}ﻩcout<<"请输入要查找得数据,输入32767结束:” ;cin〉〉a ;ﻩwhile(a != 32767)ﻩ{i =SeqSearch(*p, a) ;if(i == -1){ﻩﻩﻩcout<<”无此数据!请重新输入:"<〈endl ;ﻩﻩcin>>a ;ﻩ}ﻩﻩelseﻩﻩ{ﻩcout<〈"该数据得位置就是:"〈<i+1<<endl;ﻩcout〈<"请输入要查找得数据:" ;ﻩﻩcin〉〉a;ﻩ}ﻩ}}2、#include<iostream>using namespace std;#define MAX 100#define KeyType inttypedef struct{KeyType key ;}DataType;typedef struct{ﻩDataType elem[MAX] ;ﻩint length ;}BinTable ,*PBinTable ;PBinTable Init_BinTable(){ﻩPBinTable p = (PBinTable)malloc(sizeof(BinTable)) ;if(p != NULL){p->length= 0;ﻩﻩreturn p ;ﻩ}elseﻩ{ﻩcout〈<"Out of space!"〈<endl ;return NULL ;ﻩ}}int insert_BinTable(PBinTable p ,KeyType x){if(p—〉length >= MAX){ﻩcout<<"overflow!”<〈endl ;ﻩreturn 0 ;ﻩ}ﻩp-〉elem[p—>length]、key =x ;p->length ++ ;ﻩreturn 1;}int BinSearch(BinTable s ,KeyType k){ﻩint low,mid , high;ﻩlow = 0 ;high = s、length-1 ;while(low <= high){ﻩﻩmid=(low+high)/2 ;ﻩif(s、elem[mid]、key== k)ﻩﻩﻩreturnmid;ﻩelse if(s、elem[mid]、key >k)ﻩﻩhigh= mid- 1 ;ﻩﻩelseﻩlow = mid +1 ;ﻩ}ﻩreturn —1;}void main(){PBinTable p ;ﻩinti ,n ;ﻩKeyType a;p =Init_BinTable();cout<<”请输入数据个数:”;cin〉>n;ﻩcout<〈"请按从小到大得顺序输入数据:”〈<endl;for(i = 0 ;i〈 n; i ++)ﻩ{cin>〉a;ﻩinsert_BinTable(p,a);}ﻩcout<<"请输入要查找得数据,输入32767结束:” ;ﻩcin〉>a ;while(a!= 32767){ﻩi =BinSearch(*p , a);if(i ==-1)ﻩ{ﻩﻩcout〈〈"无此数据!请重新输入:"〈〈endl ;cin>>a;ﻩ}ﻩelse{ﻩcout<<"该数据得位置就是:”〈<i+1〈<endl ;ﻩﻩﻩcout<〈”请输入要查找得数据:" ;cin>〉a ;}ﻩ}}。
数据结构查找算法课程设计

存档编号:********课程设计说明书设计题目:查找算法性能分析系别:计算机学院专业:计算机科学班级:计科***:王***(共页)2015年01月07 日*****计算机科学专业课程设计任务书:*** 班级:学号:指导教师:**** 发题日期:2015-01-05完成日期:2015-01-09一需求分析1.1问题描述查找又称检索,是指在某种数据结构中找出满足给定条件的元素。
查找是一种十分有用的操作。
而查找也有外之分,若整个查找过程只在存中进行称为查找;若查找过程中需要访问外存,则称为外查找,若在查找的同时对表做修改运算(插入或删除),则相应的表成为动态查找表,反之称为静态查找表。
由于查找运算的主要运算是关键字的比较,所以通常把查找过程中对关键字的平均比较次数(也叫平均查找长度)作为一个查找算法效率优劣的标准。
平均查找程度ASL定义为:ASL=∑PiCi(i从1到n)其中Pi代表查找第i个元素的概率,一般认为每个元素的查找概率相等,Ci代表找到第i个元素所需要比较的次数。
查找算法有顺序查找、折半查找、索引查找、二叉树查找和散列查找(又叫哈希查找),它们的性能各有千秋,对数据的存储结构要求也不同,譬如在顺序查找中对表的结果没有严格的要求,无论用顺序表或链式表存储元素都可以查找成功;折半查找要求则是需要顺序表;索引表则需要建立索引表;动态查找需要的树表查找则需要建立建立相应的二叉树链表;哈希查找相应的需要建立一个哈希表。
1.2基本要求(1)输入的形式和输入值的围;在设计查找算法性能分析的过程中,我们调用产生随机数函数:srand((int)time(0));产生N个随机数。
注:折半查找中需要对产生的随机数进行排序,需要进行排序后再进行输入,N<50;(2)输出形式;查找算法分析过程中,只要对查找算法稍作修改就可以利用平均查找长度的公式:ASL=∑PiCi(i从1到n)输出各种查找算法的平均查找长度。
查找算法的实现

查找算法的实现查找算法是计算机科学中的一种常见算法,用于在给定的数据集中查找特定值的位置或是否存在。
常用的查找算法包括顺序查找、二分查找、哈希查找等。
下面将分别介绍这些查找算法的实现,使用C语言进行编写。
1. 顺序查找(Sequential Search):顺序查找是最简单的查找算法,它通过逐个遍历数据集中的元素来查找目标值。
若目标值在数据集中存在,返回目标值的索引位置;若不存在,返回-1```cint sequentialSearch(int arr[], int n, int target)for (int i = 0; i < n; i++)if (arr[i] == target)return i;}}return -1;```2. 二分查找(Binary Search):二分查找是一种高效的查找算法,要求数据集为有序数组。
它通过将数据集分成两半,并与目标值进行比较,从而快速缩小查找范围。
若目标值存在,返回目标值的索引位置;若不存在,返回-1```cint binarySearch(int arr[], int n, int target)int left = 0;int right = n - 1;while (left <= right)int middle = left + (right - left) / 2;if (arr[middle] == target)return middle;} else if (arr[middle] < target)left = middle + 1;} elseright = middle - 1;}}return -1;```3. 哈希查找(Hash Search):哈希查找是一种利用哈希函数和哈希表进行查找的算法。
它通过将关键字映射到一个特定的地址来进行查找。
哈希查找的时间复杂度通常为O(1)。
若目标值存在,返回目标值的索引位置;若不存在,返回-1 ```c#define SIZE 1000int hashSearch(int arr[], int n, int target)int hashMap[SIZE] = {0};for (int i = 0; i < n; i++)int index = arr[i] % SIZE;if (hashMap[index] == target)return i;}hashMap[index] = arr[i];}return -1;```以上就是顺序查找、二分查找和哈希查找的C语言实现。
数据结构课程设计两种常用查找算法的比较与实现

数据结构课程设计--两种常用查找算法的比较与实现两种常用查找算法的比较与实现摘要:本次课程设计主要研究几种常用查找算法的比较与实现,查找的算法有很多种:静态查找表的顺序表、有序表、索引顺序表等查找结构;动态查找表的二叉排序树、哈希查找等查找结构。
本次的课程设计主要研究两种常见的查找算法:顺序查找和折半查找,分析比较它们的时间复杂度,并且在此基础上用C语言对它们进行算法编程、调试和运行。
关键词:C语言;顺序查找;折半查找;时间复杂度。
21引言“数据结构”在计算机科学中是一门综合性的专业基础课,“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。
在研究信息检索时也必须考虑如何组织数据,一遍查找和存取数据元素更为方便。
因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
课程设计是我们专业课程知识综合应用的实践训练,是实践性教学的一个重要环节。
而数据结构的课程设计,更要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在日常生活中,人们几乎每天都要进行“查找”工作。
例如,在电话号码薄中查阅“某单位”或“某人”的电话号码;在字典中查阅“某个词”的读音和含义等等。
而同样地,在各种系统软件和应用软件中,也存在“查找”:如编译程序中符号表、信息处理表中相关信息的查找。
所以,“查找”就是在一个含有众多的数据元素(或记录)的查找表中找出某个“特定的”数据元素(或记录)【1】。
在计算机中进行查找的方法也会随数据结构不同而不同。
在此,引入“查找表”的概念:同类数据元素构成的集合。
所以,这次的课程设计就可以从静态查找表的几种典型的算法来实现对数据元素的查找的算法和操作的实现和比较。
数据结构检索课程设计

数据结构检索课程设计一、课程目标知识目标:1. 让学生掌握数据结构中常见检索算法的基本原理和实现方法,如顺序检索、二分检索等。
2. 使学生了解不同检索算法的优缺点及适用场景,能够根据实际问题选择合适的检索方法。
3. 帮助学生理解检索算法在解决实际问题时的重要性,培养他们在编程实践中运用数据结构进行问题求解的能力。
技能目标:1. 培养学生运用所学检索算法编写程序解决问题的能力,能够针对实际问题设计合适的检索方法并进行代码实现。
2. 提高学生在编程过程中对算法复杂度的分析能力,使其能够评估检索算法的效率并进行优化。
3. 培养学生通过团队协作和沟通交流,共同解决问题,提高团队协作能力。
情感态度价值观目标:1. 培养学生对数据结构检索算法的兴趣,激发他们主动探索和学习相关知识的热情。
2. 培养学生在面对问题时具备积极思考、勇于尝试的精神,使其在解决复杂问题时保持耐心和毅力。
3. 培养学生具备良好的编程习惯和诚信意识,在编程实践中遵循学术道德,尊重他人成果。
本课程针对高年级学生,课程性质为理论与实践相结合。
在教学过程中,注重培养学生的实际操作能力和团队协作精神,使他们在掌握检索算法知识的同时,能够将其应用于实际问题解决。
课程目标明确、具体,可衡量,便于教学设计和评估。
二、教学内容1. 数据结构基础回顾:简要介绍线性表、树等基本数据结构,为学生学习检索算法打下基础。
2. 顺序检索法:讲解顺序检索法的原理、实现方法及应用场景,结合实例进行分析。
3. 二分检索法:介绍二分检索法的原理、实现方法以及适用条件,通过实例演示提高学生理解。
4. 效率分析:分析比较顺序检索和二分检索的算法复杂度,讨论如何优化检索算法。
5. 应用案例:结合实际问题,设计检索算法的应用案例,指导学生进行编程实践。
6. 检索算法拓展:介绍其他检索算法,如哈希检索、索引检索等,拓展学生知识面。
教学内容参考教材以下章节:1. 第三章 数据结构基础2. 第四章 线性表3. 第五章 树4. 第七章 检索算法教学进度安排:1. 第1周:数据结构基础回顾,顺序检索法讲解及实践2. 第2周:二分检索法讲解及实践,效率分析3. 第3周:应用案例分析与编程实践,检索算法拓展教学内容科学、系统,紧密结合教材,注重理论与实践相结合,旨在提高学生对检索算法的理解和应用能力。
查询算法课程设计

查询算法课程设计一、课程目标知识目标:1. 学生能理解查询算法的基本概念和分类,掌握二分查找、顺序查找等常用查询算法的原理与实现。
2. 学生能够运用所学算法解决实际问题,如数组查询、排序后查询等。
3. 学生了解查询算法的时间复杂度和空间复杂度,能够分析不同算法的优缺点。
技能目标:1. 学生能够运用编程语言实现不同查询算法,具备编写简洁、高效代码的能力。
2. 学生能够通过分析问题,选择合适的查询算法,提高解决问题的效率。
3. 学生能够运用调试工具和技巧,找出并修复代码中的错误。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣和热情,增强学习动力。
2. 学生培养合作意识,学会在团队中分工合作,共同解决问题。
3. 学生培养良好的编程习惯,注重代码规范,提高代码质量。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为计算机科学与技术相关专业的核心课程,旨在提高学生编程能力和算法思维。
2. 学生特点:学生具备一定的编程基础和算法知识,但可能对查询算法的深入理解和实际应用能力不足。
3. 教学要求:注重理论与实践相结合,强调动手实践和问题解决能力的培养。
二、教学内容1. 查询算法概述- 算法概念与分类- 查询算法的应用场景2. 顺序查找- 顺序查找原理- 顺序查找代码实现- 顺序查找性能分析3. 二分查找- 二分查找原理- 二分查找代码实现- 二分查找性能分析- 二分查找应用场景4. 散列表查找- 散列表概念与原理- 散列函数设计- 冲突解决方法- 散列表查找代码实现5. 查询算法在实际问题中的应用- 数组查询问题- 排序后查询问题- 数据库查询问题6. 查询算法性能比较与优化- 时间复杂度分析- 空间复杂度分析- 算法优化策略7. 实践项目- 编程实现不同查询算法- 分析并优化实际查询问题- 团队合作与分工教学内容安排与进度:1. 第1周:查询算法概述2. 第2周:顺序查找3. 第3周:二分查找4. 第4周:散列表查找5. 第5周:查询算法在实际问题中的应用6. 第6周:查询算法性能比较与优化7. 第7-8周:实践项目本教学内容与课本紧密关联,涵盖查询算法的基本原理、实现方法、性能分析与实际应用,旨在帮助学生系统掌握查询算法知识,提高问题解决能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//顺序表的查找
if (command.equals("顺序表的查找")) {
.........
}
//有序表的动作实现
if (command.equals("有序表的查找")) {
.............
}
//二叉排序树的动作实现
if (command.equals("二叉排序树的查找")) {
4、二叉排序树的查找问题描述
在顺序表的3种查找方法中,二分查找具有最高的效率,但是由于二分查找要求表中记录按关键字有序,且不能用链表做存储结构,因此当表的插入、删除操作非常频繁时,为维护表的有序性,需要移动表中很多记录。这种由移动记录引起的额外时间开销,就会抵消二分查找的优点。这里讨论的不仅是二叉排序树具有二分查找的效率,同时又便于在查找表中进行记录的增加和删除操作。
利用对话框输入待查找的关键字,强制转化成KeyType型。
最后,调用顺序查找的seqSearch方法,利用JOptionPane.showMessageDialog输出运行查找结果。
三、数据结构描述
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
2、有序表的查找问题描述
折半查找也称为二分查找,作为二分查找对象的数据必须是顺序存储的有序表,通常假定有序表是按关键字值从小到大排列有序,即若关键字值为数值,则按数值有序;若关键字值是字符数据,则按对应的Unicode码有序。二分查找的基本思想:首先取整个有序表的中间记录的关键字值与给定值相比较,若相等,则查找成功;否则以位于中间位置的数据元素为分界点,将查找表分为左右两个子表,并判断待查找的关键字值Key是在左子表还是在右子表,再在子表中重复上述步骤,直到待查找的关键字值Key的记录或子表长度为0。
拿“顺序表的查找”按钮来说,点击之后,如果按钮的行为命令是"顺序表的查找",则按顺序表的特点先建立一个存储结构为20的顺序表,利用JOptionPane.showInputDialog弹出输入对话框,让用户输入表长,定义一个整形变量强制转化获取到字符串型的输入。
然后利用java.util.Scanner类从控制台读关键字的序列,存放在记录顺序表中。
一、问题描述
1、顺序表查找的问题描述
顺序查找又称为线性查找,它是一种最简单、最基本的查找方法。从顺序表的一端开始,依次将每一个数据元素的关键字值与给定Key进行比较,若某个数据元素的关键字值等于给定值Key,则表明查找成功;若直到所有的数据元素都比较完毕,仍找不到关键字值为Key的数据元素,则表明查找失败。
哈希表是在关键字和存储位置之间直接建立了映像,但由于冲突的产生,哈希表的查找过程仍然是一个和关键字比较的过程。因此,仍需用平均查找长度来衡量哈希表的查找效率。查找过程中与关键字比较的次数取决于构造哈希表是选择的哈希函数和处理冲突的方法。哈希函数的“好坏”首先影响出现冲突的频率,假设哈希函数是均匀的,即它对同样一组随机的关键字出现冲突的可能性是相同的。因此哈希表的查找效率主要取决于构造哈希表时处理冲突的方法。
RecordNode r =newRecordNode(k[i-1]);
try{
ST.insert(i, r);
}catch(Exception e1) {
//TODOAuto-generated catch block
e1.printStackTrace();
System.out.println("创建顺序查找表");
ST=newSeqList(20);
Scanner sc1=newScanner(System.in);
String tmp1 = JOptionPane.showInputDialog(this, "请输入查找表的表长:");
intn =Integer.parseInt(tmp,让用户可以选择要查找的方式,界面上还有退出按钮,可以退出程序。界面要求简洁明了,便于使用。
6、按钮动作命令模块问题描述
在设计好图形界面后,就必须对相应的按钮进行事件驱动程序设计。运行Java图形用户界面程序时,程序与用户交互,比如说,在框架中显示多个按钮,当点击按钮时,就会从按钮触发一个事件。同时,查找的操作必须要有输入和输出,则需要使用对话框和命令窗口进行输入关键字和输出结果。
..........
}
//哈希表开放地址法的查找
if (command.equals("哈希表开放地址法的查找")) {
...........
}
//退出
if (command.equals("退出"))
System.exit(0);
}
四、算法设计
我负责的是按钮动作的实现。
2
if(command.equals("顺序表的查找")) {
KeyType[] k=newKeyType[n];
System.out.print("请输入查找表中的关键字序列:");
for(inti = 0; i < n; i++) { //输入关键字序列
k[i] =newKeyType(sc1.nextInt());
}
for(inti=1;i<n+1;i++){ //创建记录顺序表,0号存储单元不存放元素
二、问题分析
按钮时事件的源。图形界面中一共有5个按钮,先注册按钮,再创建监听器对象,当按钮上有行为要发生时,按钮通过监听器的actionPerformed方法通知监听器。点击按钮会使监听器中actionPerformed方法被调用。
首先,点击一个按钮,从e.getActionCommand()方法从按钮返回行为命令,按钮的行为命令就是按钮的文本。调用各查找方法,之后输出查找结果。
3、哈希表查找的问题描述
在哈希表上进行查找的过程是要给定要查找的关键字的值,根据构造哈希表时设定的哈希函数求得哈希地址,若此哈希地址上为空,即没有数据元素,则查找不成功;否则比较关键字,若相等,则查找成功;若不相等,则根据构造哈希表时设置的处理冲突的方法找下一个地址,知道某个位置上为空或者关键字比较相等为止。