用C++语言写一个用冒泡排序、选择排序、插入排序三种方法排序生成的随机数输出结果,并比较这三种的运行时间
时间: 2024-06-02 21:14:06 浏览: 169
基于C++冒泡排序法
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 冒泡排序
void bubbleSort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 选择排序
void selectionSort(int arr[], int len) {
int i, j, minIndex, temp;
for (i = 0; i < len - 1; i++) {
minIndex = i;
for (j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
// 插入排序
void insertionSort(int arr[], int len) {
int i, j, temp;
for (i = 1; i < len; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
int main() {
int i, n;
clock_t start, end;
printf("请输入要排序的数组长度:");
scanf("%d", &n);
int arr[n], arr1[n], arr2[n], arr3[n];
// 生成随机数
srand(time(NULL));
for (i = 0; i < n; i++) {
arr[i] = rand() % 100;
}
// 复制数组
for (i = 0; i < n; i++) {
arr1[i] = arr[i];
arr2[i] = arr[i];
arr3[i] = arr[i];
}
// 冒泡排序
start = clock();
bubbleSort(arr1, n);
end = clock();
printf("冒泡排序结果:");
for (i = 0; i < n; i++) {
printf("%d ", arr1[i]);
}
printf("\n冒泡排序运行时间:%f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
// 选择排序
start = clock();
selectionSort(arr2, n);
end = clock();
printf("选择排序结果:");
for (i = 0; i < n; i++) {
printf("%d ", arr2[i]);
}
printf("\n选择排序运行时间:%f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
// 插入排序
start = clock();
insertionSort(arr3, n);
end = clock();
printf("插入排序结果:");
for (i = 0; i < n; i++) {
printf("%d ", arr3[i]);
}
printf("\n插入排序运行时间:%f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
return 0;
}
阅读全文