用c编写程序,所完成的功能为:(1)建立数组,元素为12, 21, 5, 25, 31, 11, 30, 26, 53, 87, 20, 3, 65, 48, 67, 91。(2)使用快速排序法对数组进行排序。(3)使用二分查找法,搜索元素3的位置。
时间: 2023-10-08 22:04:43 浏览: 39
以下是使用C语言实现题目要求的程序:
```c
#include <stdio.h>
// 快速排序函数
void quickSort(int arr[], int left, int right) {
int i, j, temp, pivot;
if (left < right) {
i = left;
j = right;
pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot)
j--;
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < pivot)
i++;
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}
// 二分查找函数
int binarySearch(int arr[], int left, int right, int target) {
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main() {
int arr[] = {12, 21, 5, 25, 31, 11, 30, 26, 53, 87, 20, 3, 65, 48, 67, 91};
int n = sizeof(arr) / sizeof(arr[0]);
int i, target, idx;
// 对数组进行排序
quickSort(arr, 0, n - 1);
printf("排序后的数组:");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
// 在排序后的数组中查找元素3
target = 3;
idx = binarySearch(arr, 0, n - 1, target);
if (idx == -1)
printf("\n未找到元素%d", target);
else
printf("\n元素%d的位置为%d", target, idx);
return 0;
}
```
程序输出结果为:
```
排序后的数组:3 5 11 12 20 21 25 26 30 31 48 53 65 67 87 91
元素3的位置为0
```
可以看到,程序成功使用快速排序法对数组进行了排序,并且使用二分查找法找到了元素3在排序后的数组中的位置为0。