1.A数组中存储500个2000以内的随机整数,完成以下操作: (1)对A数组中的元素进行直接插入排序,显示排序所用时间; (2)对A数组中的元素进行希尔排序,显示排序所用时间; (3)对A数组中的元素进行起泡排序,显示排序所用时间; (4)对A数组中的元素进行快速排序,显示排序所用时间。
时间: 2023-06-23 16:10:24 浏览: 79
以下是一个 C++ 实现的代码示例,对应上述要求:
```cpp
#include <iostream>
#include <ctime>
using namespace std;
// 直接插入排序
void insertionSort(int a[], int n) {
for (int i = 1; i < n; i++) {
int key = a[i];
int j = i - 1;
while (j >= 0 && a[j] > key) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
}
// 希尔排序
void shellSort(int a[], int n) {
for (int gap = n / 2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = a[i];
int j = i;
while (j >= gap && a[j - gap] > temp) {
a[j] = a[j - gap];
j -= gap;
}
a[j] = temp;
}
}
}
// 起泡排序
void bubbleSort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
swap(a[j], a[j + 1]);
}
}
}
}
// 快速排序
int partition(int a[], int low, int high) {
int pivot = a[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (a[j] < pivot) {
i++;
swap(a[i], a[j]);
}
}
swap(a[i + 1], a[high]);
return i + 1;
}
void quickSort(int a[], int low, int high) {
if (low < high) {
int pivotIndex = partition(a, low, high);
quickSort(a, low, pivotIndex - 1);
quickSort(a, pivotIndex + 1, high);
}
}
int main() {
const int n = 500;
int a[n];
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++) {
a[i] = rand() % 2000;
}
// 直接插入排序
clock_t start = clock();
insertionSort(a, n);
clock_t end = clock();
double elapsed = (double)(end - start) / CLOCKS_PER_SEC;
cout << "直接插入排序用时:" << elapsed << "秒" << endl;
// 希尔排序
start = clock();
shellSort(a, n);
end = clock();
elapsed = (double)(end - start) / CLOCKS_PER_SEC;
cout << "希尔排序用时:" << elapsed << "秒" << endl;
// 起泡排序
start = clock();
bubbleSort(a, n);
end = clock();
elapsed = (double)(end - start) / CLOCKS_PER_SEC;
cout << "起泡排序用时:" << elapsed << "秒" << endl;
// 快速排序
start = clock();
quickSort(a, 0, n - 1);
end = clock();
elapsed = (double)(end - start) / CLOCKS_PER_SEC;
cout << "快速排序用时:" << elapsed << "秒" << endl;
return 0;
}
```
该程序首先生成了一个长度为 500 的数组 a,其中的元素为 0 到 1999 之间的随机整数。接着分别调用了直接插入排序、希尔排序、起泡排序和快速排序,并对每种排序算法的耗时进行了输出。
值得注意的是,这里使用了 C++ 中的 clock 函数来计算程序的运行时间,需要在头文件中包含 `<ctime>`。
阅读全文