折半查找分文件
5.c
#include <myhead.h>
#include "find.h"
#define MAX 10
int main(int argc, const char *argv[])
{
int i;
int *p = malloc(sizeof(int)*MAX);//分配MAX个空间
int sub;
printf("请输入10个数组元素:");
input(p,MAX);
output(p,MAX);
int key;
scanf("%d",&key);
sub=search(key,sub,p,MAX);
if(sub==-1)
{
printf("查找失败\n");
}
else
{
printf("查找成功,该关键字在第%d个位置\n",sub+1);
}
free(p);
return 0;
}
find.c
#include <myhead.h>
int input(int *p,int MAX)
{
int i;
for(i=0;i<MAX;i++)
{
scanf("%d\t",p+i);
}
}
int output(int *p,int MAX)
{
int i;
for(i=0;i<MAX;i++)
{
printf("%d\t",*(p+i));
}
}
int search(int key,int sub,int *p,int MAX)
{
int j=MAX-1,mid;
int i=0;
while(i<=j)
{
mid = (i+j)/2;
if(key>p[mid])
{
i = mid+1;
}
else if(key<p[mid])
{
j = mid-1;
}
else
{
sub =mid;
break;
}
}
return sub;
}
find.h
#ifndef __FIND_H__
#define __FIND_H__
int input(int *p,int MAX);
int output(int *p,int MAX);
int search(int key,int sub,int *p,int MAX);
#endif
简单选择排序
6.c
#include <myhead.h>
#define MAX 10
#include "fun.h"
int main(int argc, const char *argv[])
{
int *p = malloc(sizeof(int)*MAX);
input_s(p);
ouput_s(p);
sort_s(p);
printf("\n排序后的结果:\n");
ouput_s(p);
p=NULL;
return 0;
}
fun.c
#include <myhead.h>
#define MAX 10
int input_s(int *p)
{
int i;
for(i = 0;i<MAX;i++)
{
scanf("%d",p+i);
}
return 0;
}
int ouput_s(int *p)
{
int i;
for(i = 0;i<MAX;i++)
{
printf("%d\t",*(p+i));
}
return 0;
}
int sort_s(int *p)
{
int i,j,min,t;
for(i = 0;i<MAX-1;i++)
min = i;
for(j = i+1;j<MAX;j++)
{
if(p[j]<p[min])
{
min = j;
}
}
if(i!=min)
{
t = p[i];
p[i] = p[min];
p[min] = t;
}
}
}
fun.h
#ifndef __FUN_H__
#define __FUN_H__
int input_s(int *p);
int ouput_s(int *p);
int sort_s(int *p);
#endif