C语言的冒泡排序简单来说就是将一组数据的第一个元素与后一个(相邻)元素进行比较,根据具体的要求进行换位。
例题
将数组int arr[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}使用冒泡排序进行从小到大的排序
提示:以下是本篇文章正文内容,下面案例可供参考
一、分析思考题目
题目是将整形数组arr使用冒泡排序法进行从小大的排序,首先就要理解冒泡排序是怎样的一个原理,
这道题的冒泡排序是将第一个元素 10 和他相邻的元素 9 进行比较发现10比9大,那就将10和9进行换位操作。数组就变成了:9,10,8,7,6,5,4,3,2,1。然后再将10和他的后一位相邻的元素进行比较,发现10比8大,在进行换位操作。数组就变成了9,8 ,10,7,6,5,4,3,2,1。以此类推直到最后变成了9,8,7,6,5,4,3,2,1,10。以上这只是一次的排序。而这一共要进行9次排序,当9次排序过后,数组就已经完成了所有元素的比较,数组就实现了从小到大的排序。
你可以试着将这个一维数组看成二维数组去理解这道题。
int arr[10][10] ={
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
}
二、解题步骤
1.主函数代码
代码如下(示例):
int main()
{
int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
//算出数组arr的长度
int A_long = sizeof(arr) / sizeof(arr[0]);
//调用自定义函数Arr_long
Arr_long(arr, A_long);
return 0;
}
2.自定义函数代码
代码如下(示例):
int Arr_long(int arr[], int A_long)
{
int i = 0;
//对数组arr进行遍历
for (i = 0; i < A_long - 1; i++)
{
int j = 0;
//对数组进行排序判断
for (j = 0; j < A_long - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
//对数组元素进行换位操作
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
int a = 0;
//对排序结果进行输出
for (a = 0; a < A_long; a++)
{
printf("%d ", arr[a]);
}
printf("\n");
}
}
输出结果
总结
以上内容如有说的有误的地方请各位大佬指点。我会虚心学习改正,加强自身实力。
(当然这只是我自己的一些理解,如有造成误解请轻“点”)