冒泡排序
时间复杂度 o(n^2) 【循环次数 (n-1) + (n-2) + (n-3) + .... + [n-(n-1)]】= n(n-1)/2 ~ n^2
空间复杂度 o(1) 【1个临时变量 tmp】
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int *pvar1, int *pvar2)
{
int tmp;
tmp = *pvar1;
*pvar1 = *pvar2;
*pvar2 = tmp;
}
void generate_array(int *array, int num, int range)
{
srand((unsigned)time(NULL));
for(int i = 0; i < num; i++)
{
array[i] = rand() % range;
}
}
void print_array(int *array, int num)
{
printf("The array is: ");
for (int i = 0; i < num; i++)
{
printf("%d \t", array[i]);
}
printf("\n");
}
int main()
{
int num = 15, range = 10000;
int new_array[num];
generate_array(new_array, num, range);
print_array(new_array, num);
for (int j = 0; j < num-1; j++)
{
for (int k = 0; k < num-j-1;k++)
{
if (new_array[k] > new_array[k+1])
{
swap(&new_array[k], &new_array[k+1]);
}
}
}
print_array(new_array, num);
}
The array is: 2022 8004 7099 3098 434 9749 7596 7582 6643 2135 8716 4380 42 1850 9873
The array is: 42 434 1850 2022 2135 3098 4380 6643 7099 7582 7596 8004 8716 9749 9873