使用dev c++编写(1)选择一种查找算法并实现; (2)选择两中排序算法并实现; (3)给定输入序列,任意输入15个整数,实现以上查找和排序算法。
时间: 2023-08-05 16:14:47 浏览: 95
好的,我可以帮你完成这个任务。首先,让我们选择查找算法和排序算法。
对于查找算法,我选择二分查找算法。对于排序算法,我选择快速排序和插入排序。
现在让我们开始实现它们!
1. 二分查找算法
二分查找算法的基本思想是将查找区间不断缩小为原来的一半,直到找到目标元素或者确定目标元素不存在。
下面是二分查找算法的代码:
```c++
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 目标元素不存在
}
```
2. 快速排序算法
快速排序算法的基本思想是选取一个基准元素,将序列中比它小的元素都放在它左边,比它大的元素都放在它右边,然后递归地对左右两个子序列进行排序。
下面是快速排序算法的代码:
```c++
void quickSort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
int pivot = arr[left]; // 选取第一个元素作为基准元素
while (i < j) {
while (i < j && arr[j] >= pivot) { // 从右向左找第一个小于基准元素的元素
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < pivot) { // 从左向右找第一个大于等于基准元素的元素
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1); // 对左子序列递归排序
quickSort(arr, i + 1, right); // 对右子序列递归排序
}
```
3. 插入排序算法
插入排序算法的基本思想是将序列分为已排序区间和未排序区间,每次从未排序区间中取出一个元素,插入到已排序区间中的恰当位置。
下面是插入排序算法的代码:
```c++
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int cur = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > cur) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = cur;
}
}
```
现在让我们来实现输入序列,并使用上述算法进行查找和排序。
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int left, int right, int target);
void quickSort(int arr[], int left, int right);
void insertionSort(int arr[], int n);
int main() {
int n = 15;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// 二分查找
int target = 5;
int index = binarySearch(arr, 0, n - 1, target);
if (index != -1) {
cout << "目标元素 " << target << " 在序列中的下标是 " << index << endl;
} else {
cout << "目标元素 " << target << " 不在序列中" << endl;
}
// 快速排序
quickSort(arr, 0, n - 1);
cout << "快速排序结果:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
// 插入排序
insertionSort(arr, n);
cout << "插入排序结果:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
void quickSort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
int pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < pivot) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int cur = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > cur) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = cur;
}
}
```
这样,我们就完成了该任务的实现。
阅读全文