实现一个对整形数组的冒泡排序(冒泡排序法)

简介: 实现一个对整形数组的冒泡排序(冒泡排序法)

冒泡排序法的原理:



重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小)错误就把他们交换过来,走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。


例如  {2,1,4,5,7,3,6}


经过第一次走访,变为{1,2,4,5,3,6,7}


经过第二次,变为{1,2,4,5,3,6,7}


经过第三次,变成{1,2,4,3,5,6,7}


........


经过6次,排序完成


代码实现:



#include <stdio.h>
int main()
{
  int arr[10] = { 1,3,5,7,9,2,4,6,8,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int k = 0;
  for (k = 0; k < sz - 1; ++k)
  {
    int i = 0;
    for (i = 0; i < sz-1; ++i)
    {
      if (arr[i] > arr[i + 1])
      {
        int temp = arr[i + 1];
        arr[i + 1] = arr[i];
        arr[i] = temp;
      }
    }
  }
  int j = 0;
  for (j = 0; j < sz; ++j)
  {
    printf("%d ", arr[j]);
  }
  return 0;
}


运行结果:



7ed9d467d2284b1183357697cbc0497d.png


代码分析:



#include <stdio.h>
int main()
{
  int arr[10] = {1,3,5,7,9,2,4,6,8,10};    //创建一个整形数组
  int sz = sizeof(arr) / sizeof(arr[0]);    //计算数组的大小
  int k = 0;    //用k变量来控制所需走访的次数
  for (k = 0; k < sz-1; ++k)//    走访次数应为数组元素个数减一
  {
    int i = 0;//    i变量来控制数组内部不符合顺序元素的交换
    for (i = 0; i < sz-1; ++i)
    {
      if (arr[i] > arr[i + 1])
      {
        int temp = arr[i + 1];   //用temp来当中间变量来交换相邻两个元素
        arr[i + 1] = arr[i];
        arr[i] = temp;
      }
    }
  }
  int j = 0;
  for (j = 0; j < sz; ++j)   //输出打印该数组
  {
    printf("%d ", arr[j]);
  }
  return 0;
}


函数实现代码:



void boild(int arr[10], int sz)
{
  int k = 0;
  for (k = 0; k < sz - 1; ++k)
  {
    int i = 0;
    for (i = 0; i < sz - 1; ++i)
    {
      if (arr[i] > arr[i + 1])
      {
        int temp = arr[i + 1];
        arr[i + 1] = arr[i];
        arr[i] = temp;
      }
    }
  }
}
#include <stdio.h>
int main()
{
  int arr[10] = {1,3,5,7,9,2,4,6,8,11};
  int sz = sizeof(arr) / sizeof(arr[0]);
  boild(arr, sz);
  int j = 0;
  for (j = 0; j < sz; ++j)
  {
    printf("%d ", arr[j]);
  }
  return 0;
}


运行结果:



ea0cf8a140d84bc1ad344384238d56d0.png


目录
相关文章
|
C语言
C语言之冒泡法对数组元素进行排序
C语言之冒泡法对数组元素进行排序
|
6月前
|
搜索推荐 算法 C语言
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
219 0
|
3月前
|
算法 C语言
【面试题】【C语言】寻找两个正序数组的中位数
【面试题】【C语言】寻找两个正序数组的中位数
30 0
C#基础⑥.2——数组(冒泡排序、求最值、数组排序、forr反转)
一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共5人)的平均成绩,然后把所有成绩显示出来。
LetCode第912题 排序数组之冒泡排序
依次比较相邻的两du个数,将小数放在前面zhi,大数放在后面。即首先比较第dao1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
49 0
LetCode第912题 排序数组之冒泡排序
|
算法 搜索推荐 Java
数组的四种排序方法介绍
数组的四种排序方法介绍
292 0
|
C语言
C语言实现数组的排序——冒泡排序
C语言实现数组的排序——冒泡排序
124 0
|
数据处理
整数数组中最大子数组的和(2)—— 处理二维数组
将二维转化为一维处理,当子矩阵的上下行确定时,把上下行中每一列的数据当作一个单元,确定左右列的过程就是求以列为单元的一维数组的子数组最大和的过程,这种方法大大提高了效率
91 0
整数数组中最大子数组的和(2)—— 处理二维数组
|
存储 编译器 C语言
【C】数组+冒泡排序
【C】数组+冒泡排序
134 0
【C】数组+冒泡排序