一、实验目的
1、掌握折半查找方法。
2、掌握快速排序方法。
二、实验内容
1、输入 n 个关键字,完成快速排序。
2、输入两个关键字采用折半查找。
#include <stdio.h>
#include <stdlib.h>
int Partition(int *p, int low, int high)
{
p[0] = p[low];
int pivotkey = p[low];
while(low < high)
{
while(low < high && p[high] >= pivotkey)
--high;
p[low] = p[high];
while(low < high && p[low] <= pivotkey)
++low;
p[high] = p[low];
}
p[low] = p[0];
return low;
}
int Search_Bin(int *p, int key, int n)
{
int mid;
int low = 1;
int high = n;
int judge = 0;
while( low <= high )
{
mid = (low + high) / 2;
if(p[mid] == key){
printf("%d\n", key);
judge = 1;
break;
}
else if(key < p[mid])
high = mid-1;
else
low = mid+1;
}
if(judge == 0)
printf("Not found!\n");
return 0;
}
int main()
{
int i, n, key1, key2;
int *p;
printf("Input the number of series:");
scanf("%d", &n);
p = (int*)malloc((n+1)*sizeof(int));
printf("Input the series:\n");
for(i = 1; i <= n; i++)
scanf("%d", &p[i]);
QSort(p, 1, n);
for(i = 1; i <= n; i++)
printf("%d ", p[i]);
printf("\n");
printf("Input two figures what you want:\n");
scanf("%d %d", &key1, &key2);
Search_Bin(p, key1, n);
Search_Bin(p, key2, n);
return 0;
}