冒泡排序

将相邻的两个元素进行比较,如果第一个元素大于第二个元素就交换,就这样不停的比较,一轮结束后,最大的数会在最后,然后再进行第二轮,第二大的数就会出现在倒数第二个…

冒泡排序

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int main()
{

int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
int i, j;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
printf("第%d轮:", i + 1);
printArr(arr, sz);
}

return 0;
}

输出:
1轮:9 8 7 6 5 4 3 2 1 10
2轮:8 7 6 5 4 3 2 1 9 10
3轮:7 6 5 4 3 2 1 8 9 10
4轮:6 5 4 3 2 1 7 8 9 10
5轮:5 4 3 2 1 6 7 8 9 10
6轮:4 3 2 1 5 6 7 8 9 10
7轮:3 2 1 4 5 6 7 8 9 10
8轮:2 1 3 4 5 6 7 8 9 10
9轮:1 2 3 4 5 6 7 8 9 10

写成函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int bubbleSort(int arr[], int sz)
{
int i, j;
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}

return 0;
}