随机生成10000个随机数,进行冒泡排序和快速排序,并比较时间。
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void BubbleSort(int *a, int length) //冒泡
{
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - i - 1; j++)
{
if (a[j] > a[j + 1])
{
int temp;
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
void QuickSort(int *arr, int low, int high) //快排
{
if (low < high)
{
int i = low;
int j = high;
int k = arr[low];
while (i < j)
{
while (i < j && arr[j] >= k) // 从右向左找第一个小于k的数
{
j--;
}
if (i < j)
{
arr[i++] = arr[j];
}
while (i < j && arr[i] < k) // 从左向右找第一个大于等于k的数
{
i++;
}
if (i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = k;
// 递归调用
QuickSort(arr, low, i - 1); // 排序k左边
QuickSort(arr, i + 1, high); // 排序k右边
}
}
int main()
{
int num[10000];
for (int i = 0; i<10000; i++)
{
num[i] = rand() % 10000;
}
clock_t start = clock();
BubbleSort(num, 10000); //冒泡排序测试
clock_t end = clock();
printf("使用冒泡排序花费了 %d ms.\n", end - start);//<-
getchar();
for (int i = 0; i<10000; i++)
{
num[i] = rand() % 10000;
}
clock_t start2 = clock();
QuickSort(num, 0, 9999); //快排测试
clock_t end2 = clock();
printf("使用快速排序花费了 %d ms.\n", end2 - start2);//<-
getchar();
}