0725数据结构day5

第一题:

使用哈希存储将数据存入哈希表中,并进行查找

ubuntu@ubuntu:hash$ gcc *.c
ubuntu@ubuntu:hash$ ./a.out 
0 :  NULL
1 :  25-->NULL
2 :  26-->NULL
3 :  51-->NULL
4 :  16-->NULL
5 :  41-->NULL
6 :  54-->NULL
7 :  67-->NULL
8 :  8-->NULL
9 :  NULL
10 :  22-->NULL
11 :  11-->NULL
没有这个数
找到了

第二题:

使用冒泡排序、选择排序、插入排序、快速排序完成下面案例

冒泡排序

void maopao(int arr[],int n)
{
	int temp,flag;
	for(int i=1;i<n;i++)
	{
		flag=0;
		for(int j=0;j<n-i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;
				flag=1;
			}
			if(flag=0)
			{
				break;
			}
		}
	}
}

选择排序

void xuanze(int arr[],int n)
{
	int temp;
	for(int i=0;i<n;i++)
	{
		int index=i;
		for(int j=i;j<n;j++)
		{
			if(arr[j]<arr[j+1])
			{
					index=j+1;
			}
		}
		if(index!=i){
		temp=arr[i];arr[i]=arr[index];arr[index]=temp;
		}
	}
}

插入排序

void charu(int arr[],int n)
{
	int j;
	for(int i=1;i<n;i++)
	{
		int temp=arr[i];
		for( j=i;j>0;j--)
		{
			if(temp<arr[j-1])
			{
				arr[j]=arr[j-1];
			}
		}
		arr[j]=temp;
	}
}

快速排序

int kuai(int arr[],int low,int high)
{
	int x;
	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 kuaipai(int arr[],int low,int high)
{
	if(low<high)
	{
		int mid=kuai(arr,low,high);
		kuaipai(arr,low,mid-1);
		kuaipai(arr,mid+1,high);
	}
}

排序结果图

ubuntu@ubuntu:paixu$ gcc paixu.c 
ubuntu@ubuntu:paixu$ ./a.out 
85 98 110 170 198 232 289 357 
357 289 232 198 170 110 98 85 
85 98 110 170 198 232 289 357 
357 289 232 198 170 110 98 85 

3、折半

#include<stdio.h>

int zheban(int arr[],int x,int n)
{
	int low=0;
	int high=n-1;
	while(low<=high)
	{
		int mid=(low+high)/2;
		if(arr[mid]==x)
		{
			printf("找着了,在第%d位\n",mid+1);
			return mid;
		}
		else if(arr[mid]>x)
		{
			high=mid-1;
		}else
		{
			low=mid+1;
		}
	}
	printf("没找到\n");
	return -1;
}
int main(int argc, const char *argv[])
{
	int arr[]={85,98,110,170,198,232,289,357};
	zheban(arr,98,8);

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值