第一题:
使用哈希存储将数据存入哈希表中,并进行查找
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;
}