#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#define N 1000
#define ElemType int
using namespace std;
/*
Created by HarvestWu on 2018.5.24.
*/
//快速排序算法
void QuickSort(ElemType T[], int s, int t)
{
int i = s, j = t, k;
ElemType temp;
if (s<t)
{
temp = T[s];
while (i != j)
{
while (j > i && T[j]>= temp)
j--;
T[i] = T[j];
while (i < j && T[i] <= temp)
i++;
T[j] = T[i];
}
T[i] = temp;
QuickSort(T, s, i - 1);
QuickSort(T, i + 1, t);
}
}
//输出结果
void print1(ElemType T[])
{
printf("数据量为:%d \n", N);
int i = 0;
for (i; i < N; i++)
printf("%5d ", T[i]);
}
//二分查找
int binarySearch(ElemType T[], int k)
{
int l = 0, r = N - 1;
int m;
while (l<=r)
{
m = (l + r) / 2;
if (k == T[m])
return m;
else if (k < T[m])
r = m - 1;
else l = m + 1;
}
return -1;
}
int main()
{
ElemType T[N];
for (int i = 0; i <= N - 1; i++)
T[i] = rand();//产生随机数
printf("随机数序列:\n");
print1(T);
QuickSort(T, 0, N - 1);
printf("\n快速排序算法的结果:\n");
print1(T);
int t;
printf("\n______________________________________________\n");
printf("\n请输入你要查询的数值:\n");
while (scanf("%d",&t)!=EOF)
printf("%d\n", binarySearch(T, t));
return 0;
}
快排与二分查找
最新推荐文章于 2023-06-20 20:10:08 发布