111 442222捷豹心水论坛 33 44 555 怎么顺序才能糊

matlab 中如何读取文本文件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
matlab 中如何读取文本文件
上传于|0|0|文档简介
&&matlab 中如何读取文本文件
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢var sogou_ad_id=731545;
var sogou_ad_height=90;
var sogou_ad_width=980;当前位置: >>
查找和排序实验报告
附件(四)深 圳 大 学 实 验 报 告课程名称:数据结构实验与课程设计实验项目名称:查找排序实验.学院:计算机与软件学院专业:指导教师:报告
人:学号:班级:实验时间:实验报告提交时间:教务处制 一、实验目的与完成说明: 1. 简单介绍本实验的主要目的 2. 说明你自己在本次实验中完成了第几项要求(必填)Contest1657 - DS 实验--静态查找 Problem A: 数据结构实验--静态查找之顺序查找主要目的: 给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从 1 开始 要求使用带哨兵的顺序查找算法Input第一行输入 n,表示队列有 n 个数据(完成) 第二行输入 n 个数据,都是正整数,用空格隔开(完成) 第三行输入 t,表示有 t 个要查找的数值(完成) 第四行起,输入 t 个数值,输入 t 行(完成)Output每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串 error(完成)Problem B: 数据结构实验--静态查找之折半查找主要目的: 给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从 1 开始 要求使用折半查找算法Input第一行输入 n,表示队列有 n 个数据(完成) 第二行输入 n 个数据,都是正整数,用空格隔开(完成) 第三行输入 t,表示有 t 个要查找的数值(完成) 第四行起,输入 t 个数值,输入 t 行(完成)Output每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串 error(完成)Problem C: 数据结构实验--静态查找之顺序索引查找主要目的: 给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从 1 开始(完成) 要求使用顺序索引查找算法,其中索引表查找和块内查找都采用不带哨兵、从头开始的 顺序查找方法。(完成)Input第一行输入 n,表示主表有 n 个数据(完成) 第二行输入 n 个数据,都是正整数,用空格隔开(完成) 第三行输入 k,表示主表划分为 k 个块,k 也是索引表的长度(完成) 第四行输入 k 个数据,表示索引表中每个块的最大值(完成) 第五行输入 t,表示有 t 个要查找的数值(完成) 第六行起,输入 t 个数值,输入 t 行(完成)Output每行输出一个要查找的数值在队列的位置和查找次数,数据之间用短划线隔开,如果查 找不成功,输出字符串 error(完成)Contest1040 - DS 实验--动态查找 Problem A: 数据结构实验--二叉排序树之创建和插 入 主要目的: 给出一个数据序列,建立二叉排序树,并实现插入功能 对二叉排序树进行中序遍历,可以得到有序的数据序列Input第一行输入 t,表示有 t 个数据序列(完成) 第二行输入 n,表示首个序列包含 n 个数据(完成) 第三行输入 n 个数据,都是自然数且互不相同,数据之间用空格隔开(完成) 第四行输入 m,表示要插入 m 个数据(完成) 从第五行起,输入 m 行,每行一个要插入的数据,都是自然数且和前面的数据不等(完成) 以此类推输入下一个示例(完成)Output第一行输出有序的数据序列,对二叉排序树进行中序遍历可以得到(完成) 从第二行起,输出插入第 m 个数据后的有序序列,输出 m 行(完成) 以此类推输出下一个示例的结果(完成)Problem B: 数据结构实验--二叉排序树之查找主要目的: 给出一个数据序列,建立二叉排序树,并实现查找功能(完成) 对二叉排序树进行中序遍历,可以得到有序的数据序列(完成)Input 第一行输入 t,表示有 t 个数据序列(完成) 第二行输入 n,表示首个序列包含 n 个数据(完成) 第三行输入 n 个数据,都是自然数且互不相同,数据之间用空格隔开(完成) 第四行输入 m,表示要查找 m 个数据(完成) 从第五行起,输入 m 行,每行一个要查找的数据,都是自然数(完成) 以此类推输入下一个示例(完成)Output第一行输出有序的数据序列,对二叉排序树进行中序遍历可以得到(完成) 从第二行起,输出查找结果,如果查找成功输出查找次数,如果查找失败输出-1(完成) 以此类推输出下一个示例的结果(完成)Problem C: 数据结构实验--二叉排序树之删除主要目的: 给出一个数据序列,建立二叉排序树,并实现删除功能 对二叉排序树进行中序遍历,可以得到有序的数据序列Input第一行输入 t,表示有 t 个数据序列(完成) 第二行输入 n,表示首个序列包含 n 个数据(完成) 第三行输入 n 个数据,都是自然数且互不相同,数据之间用空格隔开(完成) 第四行输入 m,表示要删除 m 个数据(完成) 从第五行起,输入 m 行,每行一个要删除的数据,都是自然数(完成) 以此类推输入下一个示例(完成) Output第一行输出有序的数据序列,对二叉排序树进行中序遍历可以得到(完成) 从第二行起,输出删除第 m 个数据后的有序序列,输出 m 行(完成) 以此类推输出下一个示例的结果(完成)Contest1050 - DS 实验--哈希查找 Problem A: 数据结构实验--哈希查找主要目的: 给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为 11,哈希冲突用链 地址法和表头插入 如果首次查找失败,就把数据插入到相应的位置中 实现哈希查找功能Input第一行输入 n,表示有 n 个数据(完成) 第二行输入 n 个数据,都是自然数且互不相同,数据之间用空格隔开(完成) 第三行输入 t,表示要查找 t 个数据(完成) 从第四行起,每行输入一个要查找的数据,都是正整数(完成)Output每行输出对应数据的查找结果(完成)Contest1060 - DS 实验--排序算法 Problem A: 数据结构实验--希尔排序主要目的: 给出一个数据序列,使用希尔排序算法进行从小到大的排序 间隔 gap 使用序列长度循环除 2 直到 1Input第一行输入 t,表示有 t 个测试示例(完成) 第二行输入 n,表示第一个示例有 n 个数据(完成) 第三行输入 n 个数据,都是正整数,数据之间用空格隔开(完成) 以此类推Output每行输出每个示例排序后,从小到大的结果(完成)Problem B: 数据结构实验--快速排序主要目的: 给出一个数据序列,使用快速排序算法进行从小到大的排序Input第一行输入 t,表示有 t 个测试示例(完成) 第二行输入 n,表示第一个示例有 n 个数据(完成) 第三行输入 n 个数据,都是正整数,数据之间用空格隔开(完成) 以此类推Output每行输出每个示例排序后,从小到大的结果(完成) 二、主要思路与方法: 1. 对于本次实验,说明你认为最重要的函数、算法或知识点,并谈谈你对它们的理解Contest1657 - DS 实验--静态查找 Problem A: 数据结构实验--静态查找之顺序查找比起普通的顺序查找, 带哨兵的顺序查找是从表尾查到表头的, 然后将表的第一位数赋值为要查找的值。 这样做能够减少一个步骤,即在循环后减少几行判断语句来决 定返回值。查到了就返回下标,下标为 0 即没有找到。Problem B: 数据结构实验--静态查找之折半查找需要排好序后才能进行折半查找。 找 22。 ①11 ↑ Low 22 33 44 ↑ Mid 55 66 77 88 ↑ High②11 ↑ Low 22 ↑ Mid 33 ↑ High 44 55 66 77 88找 88 ①11 ↑ Low 22 33 44 ↑ Mid 55 66 77 88 ↑ High②11 22 33 44 55 ↑ Low 66 ↑ Mid 77 88 ↑ High③11 22 33 44 55 66 77 ↑Low、 Mid88 ↑ High④11 22 33 44 55 66 77 88 ↑Low、 Mid、 HighProblem C: 数据结构实验--静态查找之顺序索引查找把一长条数据切割成几段,然后在这几段中分别取最代表性的数据作为索引数据,然 后查找数据时先与这几个数据比较,找到符合条件的数据后再根这段里的数据比较。 找 53 设定间隔为索引数目为 3224886√l=3;num=2;SS=12;22121389203342443824486058748653√l=3+6=9;找 90i=17;return i+1;(18)设定间隔为索引数目为 3224886num=3; return 0;Contest1040 - DS 实验--动态查找Problem A: 数据结构实验--二叉排序树之创建和插入按照大小顺序插入,如果孩子为空,比父节点大插右边,比父节点小插左边;如果 孩子不为空,父节点往右孩子或左孩子推移。 ①②③ ④Problem B: 数据结构实验--二叉排序树之查找 根据左孩子比父节点小,右孩子比父节点大的特性,通过判断与父节点的 大小左移或右移,找到后就返回该结点,输出移动的次数。Problem C: 数据结构实验--二叉排序树之删除①如果左孩子或右孩子其中一个为空,直接把它们往父节点提。 ②如果都为空,直接删除该结点。 ③如果都不为空,从左子树中取最大的一个值与父节点交换,然后删除该 结点。Contest1050 - DS 实验--哈希查找 Problem A: 数据结构实验--哈希查找0 1 2 3 4 5 6 7 8 9 10 39 62 63 75 → 52 48 11 23Contest1060 - DS 实验--排序算法 Problem A: 数据结构实验--希尔排序 Gap 表示取值的间隔和移动的次数。 gap=length/2; ①gap=6/2=3; 111 111 22 6 ②gap/2=1 111 22 6 6 6 6 22 111 22 22 22 22 111 111 111 55 444 333 111 444 333 444 6 444 333 55 22 6 444 444 333 55 333 55排序完毕。①gap=8/2=4; 77 77 77 555 33 1 444 444 555 77 666 2222 33 1 ②gap/2=2; 77 33 1 ③gap/2=1; 33 1 1 1 1 1 1 1 1 33 33 33 33 33 33 33 77 77 77 77 77 77 77 77 77 77 77 444 444 444 444 555 555 555 77 77 444 555 77 33 77 77 1 444 444 555 555666 2222666 666222222226662222666 666 2222排序完毕 Problem B: 数据结构实验--快速排序 第一种算法(有交换函数): ①在 low-high 区间内找到比 a[low]要小的值, high 等于这个值的下标。然后 a[low]和 a[high]互换。 ②在 low-high 区间内找到比 a[high]要小的值, low 等于这个值的下标。然后 a[low]和 a[high]互换。 ③重复②③步骤直到 low 等于 high。① low=0;high=n-1;(5) pivotloc=Partition(a,0,5); 111 ↑ 55 ↑ 111 ↑↑ 55 22 6 111 333 444 22 6 444 333 55 ↑ 111 ↑ 444 pivotloc=3; a. b. QSort(a,low,pivotloc-1); QSort(a,0,2); QSort(a, pivotloc+1,high); QSort(a,4,5); ②(①a) low=0;high=2; 55 ↑ 6 22 6 ↑ 55 ↑↑ 6 a. b. 22 55 111 333 444 111 333 444privotloc=2;low=0; QSort(a,low,pivotloc-1); QSort(a,0,1); QSort(a, pivotloc+1,high); QSort(a,3,2); ③(②a) low=0;high=1; 6 ↑ 22 ↑ 55 111 333 444 privotloc=0;low=0; a. b. QSort(a,low,pivotloc-1); QSort(a,0,-1); QSort(a,pivotloc+1,high); QSort(a,1,1); ④(①b) low=4;high=5; 6 22 55 111 333 ↑ privotloc=4; a. b. QSort(a,low,pivotloc-1); QSort(a,4,3); QSort(a,pivotloc+1,high); QSort(a,5,5); 排序完毕。 流程图: 444 ↑ 第二种改进算法(没有交换函数): ①把 low 下标的值赋给一个临时变量 ②在 low C high 区间里找一个比临时变量小的值 赋给 low 下标的数组。这个值的下标赋给 high。 ③在 low-high 区间里找一个比临时变量大的值赋给 high 下标的数组。这个值的下标赋给 low。 ④重复②③步骤直到 low 等于 ⑤把临时变量的值赋给 low 下标的数组。 ①low=0;high=7; Partition(a,0,7); temp=77; 77 1 1 1 1 a. b. 555 555 555 33 33 33 33 33 33 77 1 1 555 555 555 444 444 444 444 444 77 77 77 77 77 666 666 666 666 666 22 pivotloc =2; QSort(a,low,pivotloc-1); QSort(a,0,1); QSort(a, pivotloc+1,high); QSort(a,3,7); ②(①b)low=3;high=7; Partition(a,3,7); temp=555; 1 33 77 555 77 444 444 77 77 666 666
77 pivotloc =5; a. b.4445556662222QSort(a,low,pivotloc-1); QSort(a,3,4); QSort(a, pivotloc+1,high); QSort(a,6,7);③(②b)low=6;high=7; Partition(a,6,7); temp=666; 1 a. b. 33 77 77 444 555 666 2222pivotloc =6 QSort(a,low,pivotloc-1); QSort(a,3,5); QSort(a, pivotloc+1,high); QSort(a,7,7); 排序完毕。 三.实验程序或内容: 1. 针对每一项实验要求,给出编写的代码, 2. 可以粘贴全部代码,或者可以只粘贴重要的代码(为了节省纸张) ,但代码必须完整, 至少是完整的函数。 3. 代码符合以下要求,评分更高: a. 排版整齐,可读性高 b. 代码有注释,越详细越清晰越好Contest1657 - DS 实验--静态查找 Problem A: 数据结构实验--静态查找之顺序查找#include&iostream& int Search(int *ArraySize,int S,int n){ ArraySize[0]=S; for(i=n;!(ArraySize[i--]==S);); return i+1; }int main(){ int n,i,t,S, cin&&n; int *ArraySize=new int[n+1]; for(i=0;++i&n+1;){ cin&&ArraySize[i]; }//for cin&&t; while(t--){ cin&&S; num=Search(ArraySize,S,n); if(num){ cout&&num&& }//if else{ cout&&&error&&& }//else }//while return 0; }//main Problem B: 数据结构实验--静态查找之折半查找#include&iostream& int Search(int *ArraySize,int S,int n){ int low=1; int high=n; while(low&=high){ mid=(low+high)/2; if(ArraySize[mid]==S) else if(ArraySize[mid]&S)high=mid-1; else low=mid+1; } return 0; }int main(){ int n,i,t,S, cin&&n; int *ArraySize=new int[n+1]; for(i=0;++i&n+1;){ cin&&ArraySize[i]; }//for cin&&t; while(t--){ cin&&S; num=Search(ArraySize,S,n); if(num){ cout&&num&& }//if else{ cout&&&error&&& }//else }//while return 0; }//mainProblem C: 数据结构实验--静态查找之顺序索引查找 #include&iostream& int Search(int *ArraySize,int *max,int S,int n,int k,int &l){ int SS; for(num=-1;num&k&&!(S&=max[++num]);l++); if(num==k)return 0; SS=(n/k)*(num); for(int i=SS-1;++i&SS+6;){ l++; if(ArraySize[i]==S){ return i+1; } }//for return 0; }int main(){ int n,i,t,S,num,k,l; cin&&n; int *ArraySize=new int[n]; for(i=-1;++i&n;){ cin&&ArraySize[i]; }//for cin&&k; int *max=new int[k]; for(i=-1;++i&k;){ cin&&max[i]; }//for cin&&t; while(t--){ cin&&S; l=1; num=Search(ArraySize,max,S,n,k,l); if(num){ cout&&num&&&-&&&l&& }//if else{ cout&&&error&&& }//else }//while return 0; }//mainContest1040 - DS 实验--动态查找Problem A: 数据结构实验--二叉排序树之创建和插入#include&iostream& #define OK 1 #define ERROR 0 class TreeNode{ public: TreeNode *LeftC TreeNode *RightC TreeNode(){LeftChild=NULL;RightChild=NULL;data=0;} }; class Tree{ public: TreeNode* R void CreateBinary(int *a,int size) { if(size==0) Root=NULL; TreeNode *t; int length=0; t=new TreeNode(); t-&data=a[length]; Root=t; for(;++length&){ t=new TreeNode(); t-&data=a[length]; InsertElem(Root,t); }//for }//CreateBinary void InsertElem(TreeNode *F,TreeNode *t){ if(F-&data & t-&data){ if(F-&RightChild){ InsertElem(F-&RightChild,t); }//if else F-&RightChild=t; }//if else{ if(F-&LeftChild) InsertElem(F-&LeftChild,t); else F-&LeftChild=t; }//else }//InsertElem void InOrder(){ InOrder(Root); } void InOrder(TreeNode *t){ if(t){ InOrder(t-&LeftChild); cout&&t-&data&&& &; InOrder(t-&RightChild); }//if }//InSearch }; int main(){ int t,n,i,num,N; Tree T; cin&&t; while(t--){ cin&&n; int *a=new int[n]; for(i=-1;++i&n;){ cin&&a[i]; }//for T.CreateBinary(a,n); T.InOrder(); cout&& cin&& while(num--){ cin&&N; TreeNode *tr=new TreeNode(); tr-&data=N; T.InsertElem(T.Root,tr); T.InOrder(); cout&& }//while }//while return 0; }Problem B: 数据结构实验--二叉排序树之查找#include&iostream& #define OK 1 #define ERROR 0 class TreeNode{ public: TreeNode *LeftC TreeNode *RightC TreeNode(){LeftChild=NULL;RightChild=NULL;data=0;} }; class Tree{ public: TreeNode* R bool F void CreateBinary(int *a,int size) { if(size==0) Root=NULL; TreeNode *t; int length=0; t=new TreeNode(); t-&data=a[length]; Root=t; for(;++length&){ t=new TreeNode(); t-&data=a[length]; InsertElem(Root,t); }//for }//CreateBinary void InsertElem(TreeNode *F,TreeNode *t){ if(F-&data & t-&data){ if(F-&RightChild){ InsertElem(F-&RightChild,t); }//if else F-&RightChild=t; }//if else{ if(F-&LeftChild) InsertElem(F-&LeftChild,t); else F-&LeftChild=t; }//else }//InsertElem void Searchfordata(TreeNode *t,int data){ if(Find && t){ times++; if(t-&data==data){ Find= } else if(t-&data & data){ Searchfordata(t-&LeftChild,data); } else{ Searchfordata(t-&RightChild,data); } } } int Searchfordata(int data){ Find= times=0; Searchfordata(Root,data); if(Find)return -1; } void InOrder(){ InOrder(Root); } void InOrder(TreeNode *t){ if(t){ InOrder(t-&LeftChild); cout&&t-&data&&& &; InOrder(t-&RightChild); }//if }//InSearch }; int main(){ int t,n,i,num,N; Tree T; cin&&t; while(t--){ cin&&n; int *a=new int[n]; for(i=-1;++i&n;){ cin&&a[i]; }//for T.CreateBinary(a,n); T.InOrder(); cout&& cin&& while(num--){ cin&&N; cout&&T.Searchfordata(N)&& }//while }//while return 0; }Problem C: 数据结构实验--二叉排序树之删除#include&iostream& #define OK 1 #define ERROR 0 class TreeNode{ public: TreeNode *LeftC TreeNode *RightC TreeNode(){LeftChild=NULL;RightChild=NULL;data=0;} }; class Tree{ public: TreeNode* R bool F void CreateBinary(int *a,int size) { if(size==0) Root=NULL; TreeNode *t; int length=0; t=new TreeNode(); t-&data=a[length]; Root=t; for(;++length&){ t=new TreeNode(); t-&data=a[length]; InsertElem(Root,t); }//for }//CreateBinary void InsertElem(TreeNode *F,TreeNode *t){ if(F-&data & t-&data){ if(F-&RightChild){ InsertElem(F-&RightChild,t); }//if else F-&RightChild=t; }//if else{ if(F-&LeftChild) InsertElem(F-&LeftChild,t); else F-&LeftChild=t; }//else }//InsertElem void Searchfordata(TreeNode *t,int data){ if(Find && t){ times++; if(t-&data==data){ Find= } else if(t-&data & data){ Searchfordata(t-&LeftChild,data); } else{ Searchfordata(t-&RightChild,data); } } } void Delete(TreeNode* &p){ TreeNode *q; if(!p-&RightChild){ q=p;p=p-&LeftC } else if(!p-&LeftChild){ q=p;p=p-&RightC } else{ q=p; TreeNode *s; s=p-&LeftC while(s-&RightChild){q=s;s=s-&RightC} p-&data=s-& if(q!=p)q-&RightChild=s-&LeftC else q-&LeftChild=s-&LeftC } } void delete_data(TreeNode* &t,int data){ if(Find && t){ if(t-&data==data){ Find= Delete(t); } else if(t-&data & data){ delete_data(t-&LeftChild,data); } else{ delete_data(t-&RightChild,data); } } }//delete_data void delete_data(int data){ Find= delete_data(Root,data); } int Searchfordata(int data){ Find= times=0; Searchfordata(Root,data); if(Find)return -1; } void InOrder(){ InOrder(Root); } void InOrder(TreeNode *t){ if(t){ InOrder(t-&LeftChild); cout&&t-&data&&& &; InOrder(t-&RightChild); }//if }//InSearch }; int main(){ int t,n,i,num,N; Tree T; cin&&t; while(t--){ cin&&n; int *a=new int[n]; for(i=-1;++i&n;){ cin&&a[i]; }//for T.CreateBinary(a,n); T.InOrder(); cout&& cin&& while(num--){ cin&&N; T.delete_data(N); T.InOrder(); cout&& }//while }//while return 0; }Contest1050 - DS 实验--哈希查找 Problem A: 数据结构实验--哈希查找#include&iostream& #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1 #define OK 1 #define Status int class Link{ public: Link* Link(){next=NULL;} }; class HashTable{ public: Link *//数据元素存储基址,动态分配数组//当前数据元素个数//hashsize[sizeindex]为当前容量 Status NewElem(int size){ elem=new Link[size]; count=0; sizeindex= for(int i=-1;++i&){ elem[i].data=NULL; } return SUCCESS; }//NewElem int Hash(int data){ return data%11; }//Hash Status InsertHash(int data){ int c=0; if(SearchHash(data,p,c))return DUPLICATE; else if(p&sizeindex-1){ if(elem[p].next==NULL){ Link *temp=new Link(); temp-&data= count++; elem[p].next= return OK; } else{ Link *temp=new Link(); temp-&data= Link *q=elem[p]. temp-&next=q; elem[p].next= return OK; } } }//InsertHash Status SearchHash(int data,int &p,int &c){ p=Hash(data); Link *q=elem[p]. while(q!=NULL && data!=q-&data){ if(q-&next!=NULL){ q=q-& c++; } } if(q!=NULL && data==q-&data){ return SUCCESS; } else{ return UNSUCCESS; } }//SearchHash }; int main(){ HashTable HT; int n,Data,t,p,c; cin&&n; HT.NewElem(11); for(int i=-1;++i&n;){ cin&&D HT.InsertHash(Data); }//for cin&&t; while(t--){ cin&&D c=1; if(HT.SearchHash(Data,p,c)) { cout&&p&&& &&&c&& } else { cout&&&error&&& HT.InsertHash(Data); } } return 0; }Contest1060 - DS 实验--排序算法 Problem A: 数据结构实验--希尔排序#include&iostream& class ShellSort{ public: void display(int *a,int length){ for(i=-1;++i&length-1;){ cout&&a[i]&&& &; }cout&&a[i]&& } void swap(int *a,int *b){ (*a)^=(*b)^=(*a)^=(*b); } void Shell_Sort(int *a,int length){ int gap=length/2,temp,i,j, while(gap&1){ // cout&&gap&& ////// } };for(start=-1;++start&){ for(i=gap+i&i+=gap){ temp=i; for(j=i-j&=0;j-=gap){ if(a[j]&=a[temp]) swap(&a[j],&a[temp]); temp=j; }//for }//for display(a,length); }//for gap/=2; }//while cout&&&最后进行一次直接插入排序&&& //最后进行一次直接插入排序 for(i=0;++i&){ temp=i; for(j=i-1;j&=0;--j){ if(a[j]&=a[temp]) swap(&a[j],&a[temp]); temp=j; } display(a,length); }int main(){ int t,n; ShellSort SS; cin&&t; while(t--){ cin&&n; int *data=new int[n]; for(i=-1;++i&n;){ cin&&data[i]; }//for SS.Shell_Sort(data,n); for(i=-1;++i&n;){ cout&&data[i]&&& &; }//for cout&& }//while return 0; }//intProblem B: 数据结构实验--快速排序第一种算法:#include&iostream&class QuickSort{ public: void swap(int *a,int *b){ (*a)^=(*b)^=(*a)^=(*b); } int Partition(int *a,int low,int high){ int pivotkey=a[low]; while(low&high){ while(low&high && a[high]&=pivotkey)-- if(low!=high) swap(&a[low],&a[high]); while(low&high && a[low]&=pivotkey)++ if(low!=high) swap(&a[low],&a[high]); }// } void QSort(int *a,int low,int high){ if(low&high){ pivotloc=Partition(a,low,high); QSort(a,low,pivotloc-1); QSort(a,pivotloc+1,high); } } }; int main(){ int t,n; QuickSort QS; cin&&t; while(t--){ cin&&n; int *data=new int[n]; for(i=-1;++i&n;){ cin&&data[i]; }//for QS.QSort(data,0,n-1); for(i=-1;++i&n;){ cout&&data[i]&&& &; }//for cout&& }//while return 0; }//int 第二种改进算法: #include&iostream&class QuickSort{ public: int Partition(int *a,int low,int high){ int temp=a[low]; int pivotkey=a[low]; while(low&high){ while(low&high && a[high]&=pivotkey)-- if(low!=high) a[low]=a[high]; while(low&high && a[low]&=pivotkey)++ if(low!=high) a[high]=a[low]; }//while a[low]= } void QSort(int *a,int low,int high){ if(low&high){ pivotloc=Partition(a,low,high); QSort(a,low,pivotloc-1); QSort(a,pivotloc+1,high); } } }; int main(){ int t,n; QuickSort QS; cin&&t; while(t--){ cin&&n; int *data=new int[n]; for(i=-1;++i&n;){ cin&&data[i]; }//for QS.QSort(data,0,n-1); for(i=-1;++i&n;){ cout&&data[i]&&& &; }//for cout&& }//while return 0; }//int 四、实验结论: 1、根据你完成的每个实验要求,给出相应的实验结果图,并结合图来解析运行过程 2、如果运行过程简单,只要贴出 VC 运行的结果图。 3、如果无结果图,有网站的判定结果,贴出相应结果Contest1657 - DS 实验--静态查找 Problem A: 数据结构实验--静态查找之顺序查找 Sample Input8 33 66 22 88 11 27 44 55 3 22 11 99Sample Output3 5 error Problem B: 数据结构实验--静态查找之折半查找 Sample Input8 11 22 33 44 55 66 77 88 3 22 88 99Sample Output2 8 error Problem C: 数据结构实验--静态查找之顺序索引查找 Sample Input18 22 12 13 8 9 20 33 42 44 38 24 48 60 58 74 57 86 53 3 22 48 86 6 13 5 48 40 53 90Sample Output3-4 error 12-8 error 18-9 error Contest1040 - DS 实验--动态查找Problem A: 数据结构实验--二叉排序树之创建和插入Sample Input1 6 22 33 55 66 11 44 3 77 50 10Sample Output11 11 11 10 22 22 22 11 33 33 33 22 44 44 44 33 55 55 50 44 66 66 77 55 66 77 50 55 66 77 Problem B: 数据结构实验--二叉排序树之查找 Sample Input1 6 22 33 55 66 11 44 7 11 22 33 44 55 66 77Sample Output11 22 33 44 55 66 2 1 2 4 3 4 -1Problem C: 数据结构实验--二叉排序树之删除 Sample Input1 6 22 33 55 66 11 44 3 66 22 77Sample Output11 11 11 11 22 22 33 33 33 33 44 44 44 55 66 44 55 55 55 Contest1050 - DS 实验--哈希查找 Problem A: 数据结构实验--哈希查找 Sample Input6 11 23 39 48 75 62 6 39 52 52 63 63 52Sample Output6 1 error 8 1 error 8 1 8 2 Contest1060 - DS 实验--排序算法 Problem A: 数据结构实验--希尔排序 Sample Input2 6 111 22 6 444 333 55 8 77 555 33 1 444 77 666 2222Sample Output6 22 55 111 333 444 1 33 77 77 444 555 666 2222 Problem B: 数据结构实验--快速排序 Sample Input2 6 111 22 6 444 333 55 8 77 555 33 1 444 77 666 2222Sample Output6 22 55 111 333 444 1 33 77 77 444 555 666 2222
五、实验体会: (根据自己情况填写)优化算法追求的是更少的运行时间和更少的空 间需求。 顺序查找可以减少个返回值的判断。 折半查找在每次折中的时候都能排除掉一半的 数据。但是需要先排好序。 顺序索引查找即把一段数据用代表性数据来代 替,先找代表性数据,再找指定的那段数据。把一 段几百万的数据分解成几十万。每次最差情况是几 十万加十万的查找量,比起顺序查找最差情况几百 万的查找量优化了许多。 二叉树的排序的好处是升序和降序能快速转 换。但是数据过多的时候二叉树的构建速度越来越 慢。 哈希查找,在没有冲突事件的时候它是最快的。 希尔排序,用直接插入法处理的次数为 length/2+length/4+length/8+??+1 次。 快速排序,大部分时间在移动指针。不断重复 把 low 指针和 high 指针合在一起的过程。注: “指导教师批阅意见”栏请单独放置一页 指导教师批阅意见:成绩评定:指导教师签字: 年 月 日备注:
实验四:查找与排序 【实验目的】 1. 2. 掌握顺序查找算法的实现。 掌握折半查找算法的实现。 【实验内容】 1. 编写顺序查找程序,对以下数据查找 37 所在的...查找排序实验报告_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档查找排序实验报告_计算机软件及应用_IT/计算机_专业资料。《编程实训》 ...查找排序实验报告 数据结构 实验报告稿查找排序实验报告 数据结构 实验报告稿隐藏&& 查找、排序实验班级 学号 姓名 一、实验目的 1 掌握不同的查找和排序方法,并能...排序查找实验报告 暂无评价 10页 5财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...查找排序的应用班级:计科 112 姓名:张航 学号: 辅导老师:高艳霞 查找排序的应用一、 实验目的 1、本实验可以使学生更进一步巩固各种查找和排序的基本...河南工业大学实验报告_实验三 查找和排序(一)――查找_调查/报告_表格/模板_实用文档。xxx 大学实验报告课程名称 院姓系名日 数据结构 信息学院计类系 学期成绩...查找与排序_实验报告_计算机软件及应用_IT/计算机_专业资料。数据结构查找与排序实验报告 西安交通大学实验报告课程 数据结构 实验名称 系别__ 查找与排序应用实 验...贵州大学实验报告学院: 姓名 实验时间 实验项目名称 实验
电子信息学院 专业: 通信工程 学号 指导教师 查找 排序 班级:2012 级 1 班 实验组 成绩 ...查找与排序实验报告_计算机软件及应用_IT/计算机_专业资料。实实验原理: 验 报 告 快速排序的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部...查找排序实验报告_计算机软件及应用_IT/计算机_专业资料。数据结构实验报告 实验名称:查找 班学姓级:12 级电气本 2 号: 名:赵雪磊 指导教师:梁海丽 ...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 999 555 333 111 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信