#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include<stdbool.h>
void BubbleSort1(int* arr, int len)
{
int tmp;
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j + 1 < len - i; j++)
{
if (arr[j] > arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
//冒泡排序的优化
void BubbleSort(int* arr, int len)
{
int tmp;
bool flg;//标记是否有交换数据
for (int i = 0; i < len - 1; i++)
{
flg = false;
for (int j = 0; j + 1 < len - i; j++)
{
if (arr[j] > arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flg = true;
}
}
if (!flg)//没有交换数据则排序已经完成
{
return;
}
}
}
#define NUM 40000
#include <assert.h>
int Cmp_int(const void* vp1, const void* vp2)
{
return *(int*)vp1 - *(int*)vp2;
}
int main()
{
//const char *str = "adf erth678adsfkertwe,eurahdfasdfhiasdfas";//bug
//printf("%s\n",MaxWord(str));
//int arr[] = {12,3,8,9,0,23,45,77,98,17,99,6};
//BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
//SelectSort(arr,sizeof(arr)/sizeof(arr[0]));
//Show(arr,sizeof(arr)/sizeof(arr[0]));
int* arr = (int*)malloc(NUM * sizeof(int));
int* brr = (int*)malloc(NUM * sizeof(int));
assert(arr != NULL && brr != NULL);
srand(time(NULL));//加随机种子(骰子)
for (int i = 0; i < NUM; i++)
{
brr[i] = arr[i] = rand() * rand();
}
clock_t c1 = clock();
BubbleSort1(arr, NUM);
clock_t c2 = clock();
printf("优化前的时间%ld,数据样本%d\n", c2 - c1, NUM);
BubbleSort(brr, NUM);
//qsort(brr,NUM,sizeof(int),Cmp_int);
clock_t c3 = clock();
printf("优化后的时间%ld,数据样本%d\n", c3 - c2, NUM);
return 0;
}
测试结果 优化后的作用并不是很明显