贴上代码:
void bubble_sort(int* arr, int size)
{
int i = 0;
for (i = 1; i < size; i++)
{
int j = 0;
for (j = 0; j < size -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[] = { 10, 3, 5, 13, 23, 66, 45, 133, 34 };
int size = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, size);
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
输出如下
void bubble_sort(int* arr, int size)
{
int i = 0;
for (i = 0; i < size - 1; i++)
{
int j = 0;
for (j = 0; j < size - i - 1; j++)
{
if (*(arr + j) > *(arr + j + 1))
{
int tmp = *(arr+j);
*(arr+j)=*(arr+j+1);
*(arr + j + 1) = tmp;
}
}
}
}
int main()
{
int arr[] = { 10, 3, 5, 13, 23, 66, 45, 133, 34 };
int size = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, size);
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
函数还可以优化:
思路:如果有一趟不进行不进行元素的交换,那么就证明数组已经有序,不需要再进行操作
void bubble_sort(int* arr, int size)
{
int i = 0;
for (i = 1; i < size; i++)
{
int j = 0;
int flag = 1; '//添加一个标志:1表示数组有序。'
for (j = 0; j < size -i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = 0; '//如果进行交换,则表示数组无序,将flag置为0'
}
}
if (flag == 1)
{
break;
}
}
}



