文章目录
前言
冒泡排序的核⼼思想就是:两两相邻的元素进⾏⽐较。
一、冒泡排序实例图示
二、代码实现
void BubbleSort(int* arr, int sz)
{
int i = 0;
//比较的趟数
for (i = 0;i < sz-1; i++)
{
int j = 0;
//一趟冒泡排序的次数
for (j = 0; j < sz - 1 - i; j++)
{
//两两比较
if (*(arr + j) > *(arr + j + 1))
{
int tmp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = tmp;
}
}
}
}
int main()
{
int arr[9] = { 9,8,7,6,5,4,3,2,1};
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
return 0;
}
以上代码,如果出现一组数字912345678这时只需要一趟冒泡排序就可以了。
改进代码:
void BubbleSort(int* arr, int sz)
{
int i = 0;
//比较的趟数
for (i = 0;i < sz-1; i++)
{
int flag = 1;//假设数组是有序的
int j = 0;
//一趟冒泡排序的次数
for (j = 0; j < sz - 1 - i; j++)
{
//两两比较
if (*(arr + j) > *(arr + j + 1))
{
flag = 0;//数组无序falg为0
int tmp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = tmp;
}
}
if (flag == 1)//如果falg为1说明数组是有序的
{
break;
}
}
}
int main()
{
int arr[9] = { 9,1,2,3,4,5,6,7,8};
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
return 0;
}