分别编写函数,用递归及非递归的方式实现冒泡排序算法;然后用一个整数序列测试递归及非递归方式下的执行效率
时间: 2024-05-05 07:19:32 浏览: 61
好的,我可以为您回答这个问题。
以下是递归方式实现冒泡排序的示例代码:
```
void recursiveBubbleSort(int arr[], int n) {
if (n == 1) {
return;
}
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i+1]) {
// swap elements
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
recursiveBubbleSort(arr, n-1);
}
```
以下是非递归方式实现冒泡排序的示例代码:
```
void iterativeBubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// swap elements
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
为了测试递归及非递归方式下的执行效率,您可以使用以下代码生成一个随机整数序列,并分别将其用于测试:
```
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void generateRandomArray(int arr[], int size) {
srand(time(NULL));
for (int i = 0; i < size; i++) {
arr[i] = rand() % 1000;
}
}
int main() {
int arr[1000];
int size = sizeof(arr)/sizeof(int);
generateRandomArray(arr, size);
clock_t tStart = clock();
recursiveBubbleSort(arr, size);
printf("Recursive Bubble Sort Time taken: %.10fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
generateRandomArray(arr, size);
tStart = clock();
iterativeBubbleSort(arr, size);
printf("Iterative Bubble Sort Time taken: %.10fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
return 0;
}
```
在该示例代码中,我们使用了 `clock()` 函数来计算两种排序方式的执行时间。您可以根据需要修改生成的随机数序列的大小,以便更全面地测试它们的执行效率。
希望以上内容能对您有所帮助。
阅读全文