第一题:使用哈希存储将数据存入哈希表中,并进行查找
![在这里插入图片描述](https://img-blog.csdnimg.cn/207f2d88aa314082a8d8ea566d290eec.png)
初始化哈希表
void init_hash(Node* hash[])
{
for(int i=0;i<P;i++)
{
hash[i] = NULL;
}
printf("初始化成功\n");
}
将元素存入哈希表函数
int insert_hash(Node* hash[],int x)
{
int index = x%P;
Node *q=(Node*)malloc(sizeof(Node));
if(NULL==q)
{
printf("空间申请失败!\n");
return -1;
}
q->data=x;
q->next=NULL;
q->next = hash[index];
hash[index] = q;
}
定义查看哈希表函数
void show_hash(Node* hash[])
{
for(int i=0;i<P;i++)
{
printf("%d: ",i);
Node* q=hash[i];
while(q!=NULL)
{
printf("%d——>",q->data);
q=q->next;
}
printf("^\n");
}
}
哈希查找
void hash_search(Node* hash[],int x)
{
int index = x%P;
Node* q = hash[index];
while(q!=NULL&&q->data!=x)
{
q=q->next;
}
if(NULL==q)
{
printf("查找失败!\n");
}else
{
printf("你要查找的数据在表中!\n");
}
}
测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/cca5316d4e684d97ae0727ecc17d125e.png)
第二题:使用冒泡排序、选择排序、插入排序、快速排序完成下面案例
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef00ede4fbe64879b293e48034dd7992.png)
冒泡排序
void bubble_sort(int *arr)
{
for(int i=0;i<N-1;i++)
{
int flag = 0;
for(int j=0;j<N-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];arr[j]=arr[j+1];arr[j+1]=temp;
flag=1;
}
}
if(flag==0)
{
break;
}
}
}
选择排序
void select_sort(int *arr)
{
for(int i=0;i<N-1;i++)
{
int index=i;
for(int j=i+1;j<N;j++)
{
if(arr[j]<arr[index])
index=j;
}
if(index!=i)
{
int temp=arr[index];arr[index]=arr[i];arr[i]=temp;
}
}
}
插入排序
void insert_sort(int *arr)
{
for(int i=1;i<N;i++)
{
int temp=arr[i];
int j;
for(j=i;j>0&&arr[j-1]>temp;j--)
{
arr[j]=arr[j-1];
}
arr[j]=temp;
}
}
快速排序
int part(int *arr,int low,int high)
{
int x = arr[low];
while(low<high)
{
while(arr[high]>=x&&low<high)
{
high--;
}
arr[low]=arr[high];
while(arr[low]<=x&&low<high)
{
low++;
}
arr[high] = arr[low];
}
arr[low] = x;
return low;
}
void quick_sort(int *arr,int low,int high)
{
if(low<=high)
{
int mid = part(arr,low,high);
quick_sort(arr,low,mid-1);
quick_sort(arr,mid+1,high);
}
}
测试结果
排序前:
int arr[N] = {198,289,98,357,85,170,232,110};
![在这里插入图片描述](https://img-blog.csdnimg.cn/aaacacb58e2b429bb82189fb2da05b2b.png)