写的我好累,分给我吧
#include<iostreamh>
#include<iomaniph>
template <class T>
class Array
{
T set;
int n;
public:
Array(T data,int i){set=data;n=i;}
~Array(){}
void sort(); // 排序
int seek(T key); // 查找指定的元素
T sum(); // 求和
void disp(); // 显示所有的元素
};
template<class T>
void Array<T>::sort()
{
int i,j;
T temp;
for(i=1;i<n;i++)
for(j=n-1;j>=i;j--)
if(set[j-1]>set[j])
{
temp=set[j-1];set[j-1]=set[j];set[j]=temp;
}
}
template <class T>
int Array<T>::seek(T key)
{
int i;
for(i=0;i<n;i++)
if(set==key)
return i;
return -1;
}
template<class T>
T Array<T>::sum()
{
T s=0;int i;
for(i=0;i<n;i++)
s+=set;
return s;
}
template<class T>
void Array<T>::disp()
{
int i;
for(i=0;i<n;i++)
cout<<set<< ;
cout<<endl;
}
void main()
{
int a[]={6,3,8,1,9,4,7,5,2};
double b[]={23,61,15,84,67,38};
Array<int>arr1(a,9);
Array<double>arr2(b,6);
cout<< arr1:<<endl;
cout<< 原序列:; arr1disp();
cout<< 8在arr1中的位置:<<arr1seek(8)<<endl;
arr1sort();
cout<< 排序后:; arr1disp();
cout<<arr2:<<endl;
cout<< 原序列:; arr2disp();
cout<< 84在arr2中的位置:<<arr2seek(84)<<endl;
arr2sort();
cout<< 排序后:; arr2disp();
}
#include<stdioh>
#include<stdlibh>
#define Size 50
//定义顺序表结构体类型
typedef struct Table{
inthead;//顺序表头指针,为整型
int length;//顺序表中元素个数
int size; //顺序表的长度
}Table;
//创建顺序表
Table CreateTable(){
Table T;
if(!(Thead=(int)malloc(Sizesizeof(int)))){
printf("内存分配错误!\n");
exit(0);
}
Tsize=Size;
Tlength=0;
return T;
}
//增加
void Insert(Table T,int set,int values)//set为插入的位置,values为值
{
//首先判断插入位置是否正确
if(set<0||set>Tlength){
printf("插入位置不正确!\n");
reutrn;
}
//判断是否有足够的内存空间存储增加的数
if(Tlength==Tsize){
if(!(Thead=(int)realloc(Thead,(Tsize+10)sizeof(int)))){
printf("内存分配错误!\n");
exit(0);
}
Tsize+=10;
}
//插入数据
for(int i=slength;i>set;i--)
Thead[i]=Thead[i-1];
Thead[set]=values;
Tlength++;
}
//删除
void Delete(Tabel T,int set)
{
if(set<0||set>=Tlength)
{
printf("删除数的位置不争确,删除失败!\n");
return;
}
//输出数据
for(int i=set;i<slength;i++)
Thead[i]=Thead[i+1];
Tlength--;
}
//查找
int Search(Tabel T,int value)
{
for(int i=0;i<Tlength;i++)
if(Thead[i]==value)
return i;
return -1;
}
有问题的话自己改一下,没调试。
二分查找:
int search(int a[],int x,int n)
{
int mid=0;
int low=0;
int high=n;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==x)
{ return mid; }
else if(x<a[mid])
{ high=mid-1; }
else
{ low=high+1; }
}
return -1;
}
顺序查找:
int search(int a[],int x,int n)
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==x)
return i;
else
return -1;
}
}
我认为第一空应在scanf上面
应该是提示语句如printf("please
input
the
number
you
want
to
search\n");
第二空应为
i>=9;
由于数组元素只有九个所以要判断的是i>=9
就是说第十个即使是跟所找的数字相等
也不算找到
应为由题意
根本不知a[10]为多少
1)利用readData()函数从data1txt中读入不同规模的数据存入数组,
编写基于数组的顺序查找算法,测试数据量为1万、5万、10万、20万、
30万、40万和50万时的数据查询时间。
算法代码如下:

1 int seqsearch(int a[],int n,int key)
2 {
3 int k=n-1;
4 while(k>=0&&a[k]!=key)
5 k--;
6 return (k);
7 }

2)利用readData()函数从data2txt中读入不同规模的有序数据存入数组,
编写基于数组的二分查找算法,测试数据量为1万、5万、10万、20万、30万、
40万和50万时的数据查询时间。
算法代码如下:

1 int binSearch(int a[],int n,int key)
2 {
3 int low=0;
4 int high=n-1;
5 int mid;
6 while(low<=high)
7 {
8 mid=(low+high)/2;
9 if(a[mid]==key) return mid;
10 if(a[mid]>key)
11 high=mid-1;
12 else
13 low=mid+1;
14 }
15 return -1;
16 }

3)请设计冒泡排序算法函数void bubbleSort(int a[],int n),对a[1]a[n]进行升序排序。
并测试在不同数据规模下的排序效率。
算法代码如下:

1 void bubbleSort(int a[],int n)
2 {
3 int i=1,j,flag=1;
4 while(i<=n-1&&flag)
5 {
6 flag=0;
7 for(j=1;j<=n-1-i;j++)
8 if(a[j+1]<a[j])
9 {
10 a[0]=a[j];
11 a[j]=a[j+1];
12 a[j+1]=a[0];
13 flag=1;
14 }
15 i++;
16 }
17 }

int IdxSerch(SeqList A[],IdxType index[],int b,KeyType k,int n) {
//分块查找关键字为k的记录,索引表为
index[0b-1]
int low=0,high=b-1,mid,i;
int s=n/b; //每块记录个数
while(low<=high)
{
//在索引表中进行二分查找,找到的位置放在low中
mid=(low+high)/2;
if(index[mid]key<k) low=mid+1;
else high=mid-1;
}
if(low<b)
{
//在顺序表中顺序查找
for(i=index[low]link;i<=index[low]link+s-1 && i<n;i++)
if(A[i]key==k) return i;
return -1;
}
return -1;
}
typedef struct node
{
KeyType key;
//结点中的关键字
struct node lchild,rchild; //左、右孩子指针
}BsTree;
BsTree BstSeareh(BsTree BST,KeyType k ,BsTree parent)
{
BsTree p=BST,q=NULL; //p指向根结点,q指向p的双亲
while(p!=NULL)
{
if(k==p->key)
{ //查找成功
parent=q;
return (p);
}
q=p;
if(k<p->key) p=p->lchild;
//在左子树中查找
else p=p->rchild; //在右子树中查找
}
parent=q;
return (p);
//查找失败,返回空
}
以上就是关于C ++编写一个使用类模板对数组进行排序、查找和求元素和的程序。全部的内容,包括:C ++编写一个使用类模板对数组进行排序、查找和求元素和的程序。、C语言编写一个顺序表程序,要求:完成创建、增加、删除、查找。、如何编写二分查找和顺序查找的C语言代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)