借助快速排序的思想,在一组无序的记录中查找给定关键字的值等于key的记录,设此记录存放于数组 r [ 1... n ]中。若查找成功,则返回在 r数组中的位置,否则显示"not find"信息。
#include <stdio.h>
#include <stdlib.h>
void QuickSort(int* arr, int low, int high,int key)
{
int flag = 0;
int length = high;
while (low < high)
{
while (low < high)
{
if (arr[low] == key)
{
printf("%d ", low);
flag = 1;
low++;
break;
}
low++;
}
while (low < high&& arr[high] == key&& arr[high] != arr[low])
{
printf("%d ", high);
flag = 1;
break;
high--;
}
}
if (high == length && arr[high] == key)
{
printf("%d ", high);
flag = 1;
}
if (flag == 0) printf("not find");
}
void main()
{
int* arr;
int length,key;
printf("请输入数组长度");
scanf_s("%d", &length);
arr = (int*)malloc(sizeof(int) * (length + 1));
printf("请依次输入数组中的各个数值");
for (int i = 1; i <= length; i++)
scanf_s("%d", &arr[i]);
printf("请输入key的值");
scanf_s("%d", &key);
QuickSort(arr, 1, length,key);
}