冒泡排序
第一种形式–>两个for循环
#include<stdio.h>
#include<stdlib.h.>
void bubbleSort(int arr[], int n)//arr[]定义传入的数组,n定义传入数组内元素数量
{
int i;
int j = 0;
int temp;//临时变量
for (j = n; j >= 2;--j)//三个数找最大值找两次就行
{
for (i = 0; i <= n - 2;++i)//三个数找最大值交换两次就行
{
if (arr[i]>arr[i + 1])
{
temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp;
}
}
}
}
int main()
{
int i;
int arr[20] = { 1, 70, 2, 8, 3, 7, 4, 6, 5 };
bubbleSort(arr,9);//传参注意,数组传参形式,数组元素数量
for (i = 0; i <= 8; ++i)//9个数要打印9次
{
printf("%d\t", arr[i]);
}
system("pause");
return 0;
}
第二种形式 -->自定义两个函数,用主函数调用
#include<stdio.h>
#include<stdlib.h.>
void bubble(int arr[20], int n)//这个函数目的找出最大值,放在右侧
{
int i;
int j=0;
int temp;
for (j = n; j>1 ; --j)
{
for (i = 0; i < n - 1; ++i)//
{
if (arr[i] > arr[i + 1])
{
temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp;
}
}
}
}
void bubbleSort(int arr[20], int n)//这个函数目的是将bubble函数执行n-1次,
{ //每次求出最大值(相对之前的来说是第二大)
int i;
for (i = n; i >1; --i)//3个数找两次最大值就行
{
bubble(arr, n);
}
}
int main()
{
int i;
int arr[20] = { 1, 70, 2, 8, 3, 7, 4, 6, 5 };
bubbleSort(arr,9);//传参注意,数组传参形式,数组元素数量
for (i = 0; i <= 8; ++i)//9个数要打印9次
{
printf("%d\t", arr[i]);
}
system("pause");
return 0;
}

本文详细介绍了冒泡排序的两种实现方式:一种是使用两个嵌套的for循环;另一种是通过自定义两个函数,利用主函数进行调用。内容覆盖冒泡排序的基本原理和C语言代码实现。

2714

被折叠的 条评论
为什么被折叠?



