#include
<stdio.h>
#include <math.h>
#include <stdlib.h>
#define MAX_SIZE 101
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define COMPARE(x,y) (((x)<(y))?-1:((x)==(y))?0:1)
void sort(int [],int);
int binsearch(int [],int searchnum,int left,int right);
int main()
{
srand(time(0));
int i,n;
int list[MAX_SIZE];
printf("Enter the number of numbers to
generate:");
scanf("%d",&n);
if(n<</span>1||n>MAX_SIZE)
{
printf("Improper value of
n\n");
exit(1);
}
for(i=0;i<</span>n;i++)
{
list[i]=rand()%1000;
printf("%d ",list[i]);
}
sort(list,n);
printf("\nSorted array:\n");
for(i=0;i<</span>n;i++)
printf("%d ",list[i]);
printf("\n");
printf("%d\n",binsearch(list,500,0,n-1));
return 0;
}
//选择排序
void sort(int list[],int n)
{
int i,j,min,temp;
for(i=0;i<</span>n-1;i++)
{
min=i;
for(j=i+1;j<</span>n;j++)
if(list[j] < list[min])
min=j;
SWAP(list[i],list[min],temp);
}
}
//折半查找
int binsearch(int list[],int searchnum,int left,int right)
{
int middle;
while(left<=right)
{
middle=(left+right)/2;
switch(COMPARE(list[middle],searchnum))
{
case
-1: left=middle+1;break;
case
0 : return middle;
case
1 : right=middle-1;
}
}
return -1;
}
//才知道宏定义还可以这么用,比如交换、比较两个数值
//这样做的好处是可以适用于任何数据类型
#include <math.h>
#include <stdlib.h>
#define MAX_SIZE 101
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define COMPARE(x,y) (((x)<(y))?-1:((x)==(y))?0:1)
void sort(int [],int);
int binsearch(int [],int searchnum,int left,int right);
int main()
{
}
//选择排序
void sort(int list[],int n)
{
}
//折半查找
int binsearch(int list[],int searchnum,int left,int right)
{
}
//才知道宏定义还可以这么用,比如交换、比较两个数值
//这样做的好处是可以适用于任何数据类型
//程序摘自Fundamentals of Data Structures
in C