生成c++代码(A数组中存储500个2000以内的随机整数,完成以下操作: (1)对A数组中的元素进行直接插入排序,显示排序所用时间; (2)对A数组中的元素进行希尔排序,显示排序所用时间; (3)对A数组中的元素进行起泡排序,显示排序所用时间; (4)对A数组中的元素进行快速排序,显示排序所用时间。)
时间: 2024-01-11 13:02:20 浏览: 46
c++实现对输入数组进行快速排序的示例(推荐)
5星 · 资源好评率100%
以下是生成所需的 C++ 代码:
```c++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
// 生成随机整数
int A[500];
void generateRandomInt()
{
srand(time(NULL));
for(int i=0; i<500; i++)
{
A[i] = rand() % 2000 + 1;
}
}
// 直接插入排序
void insert_sort(int array[], int n)
{
clock_t start, end;
start = clock();
for(int i=1; i<n; i++)
{
int temp = array[i];
int j = i - 1;
while(j>=0 && array[j]>temp)
{
array[j+1] = array[j];
j--;
}
array[j+1] = temp;
}
end = clock();
cout << "直接插入排序所用时间:" << (double)(end-start)/CLOCKS_PER_SEC << "s" << endl;
}
// 希尔排序
void shell_sort(int array[], int n)
{
clock_t start, end;
start = clock();
int gap = n / 2;
while(gap > 0)
{
for(int i=gap; i<n; i++)
{
int temp = array[i];
int j = i - gap;
while(j >= 0 && array[j] > temp)
{
array[j+gap] = array[j];
j -= gap;
}
array[j+gap] = temp;
}
gap /= 2;
}
end = clock();
cout << "希尔排序所用时间:" << (double)(end-start)/CLOCKS_PER_SEC << "s" << endl;
}
// 起泡排序
void bubble_sort(int array[], int n)
{
clock_t start, end;
start = clock();
bool flag = false;
for(int i=0; i<n-1; i++)
{
flag = false;
for(int j=0; j<n-i-1; j++)
{
if(array[j] > array[j+1])
{
swap(array[j], array[j+1]);
flag = true;
}
}
if(!flag)
{
break;
}
}
end = clock();
cout << "起泡排序所用时间:" << (double)(end-start)/CLOCKS_PER_SEC << "s" << endl;
}
// 快速排序
void quick_sort(int array[], int left, int right)
{
clock_t start, end;
start = clock();
if(left >= right)
{
return;
}
int i = left, j = right;
int pivot = array[(left+right)/2];
while(i <= j)
{
while(array[i] < pivot)
{
i++;
}
while(array[j] > pivot)
{
j--;
}
if(i <= j)
{
swap(array[i], array[j]);
i++;
j--;
}
}
quick_sort(array, left, j);
quick_sort(array, i, right);
end = clock();
cout << "快速排序所用时间:" << (double)(end-start)/CLOCKS_PER_SEC << "s" << endl;
}
int main()
{
generateRandomInt();
insert_sort(A, 500);
shell_sort(A, 500);
bubble_sort(A, 500);
quick_sort(A, 0, 499);
return 0;
}
```
注意:以上代码仅供参考,实际运行效果可能因环境和数据集不同而有所差异。
阅读全文