#include <stdio.h>
#include <stdlib.h>
//冒泡排序非正式版
//默认从小到大排序
//时间复杂度:n+n-1+n-2+......+1 即(n+1)n/2,O(n^2)
void BublbleSort1(int k[], int n)
{
int i, j, tmp;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (k[i] > k[j])
{
tmp = k[i];
k[i] = k[j];
k[j] = tmp;
}
}
}
}
//冒泡排序正式版
//基本思想:两两相邻记录的关键字,如果反序则交换,直到没有反序为止
//最坏情况和BublbleSort1执行次数相同,对于特殊的序列,效率大大提升
void BublbleSort2(int k[], int n)
{
int i, j, tmp;
bool flag = true;
for (i = 0; ((i < n - 1 )&& flag); i++)
{
flag = false;
for (j = n-1; j > i; j--)
{
if (k[j-1] > k[j])
{
tmp = k[j-1];
k[j-1] = k[j];
k[j] = tmp;
flag = true;
}
}
}
}
void print(int a[], int num)
{
int i = 0;
for (i = 0; i < num; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int a[10] = { 2, 3, 56, 1, 4, 7, 8, 94, 3, 10 };
BublbleSort2(a, 10);
print(a, 10);
return system("pause");
}
排序算法之----冒泡排序
最新推荐文章于 2024-09-13 21:45:13 发布