首先给大家介绍一下什么是冒泡排序法:
先假设我们这里要排的是升序,就是从小到大排序
这个算法的基本思想是:两两相邻的元素进行比较,如果前面的元素比后面的打,就将两个元素的位置交换,重复这一过程,知道所有的元素都排序号位置。
这个算法的实现有两个步骤:
第一步:一趟冒泡排序的实现,每一次都会把较大的值放到数组的最后面
第二步:有n个元素,就要实现n-1趟的排序。
现在假设有一个数组arr[10]={9,8,7,6,5,4,3,2,1}; 我们要对他进行排序
排序的过程就是这样的
代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
int k = 0;
int arr[10] = { 0 };
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < 9; i++) //有n个元素,就要实现n-1趟排序
{
for (j = 0; j < 9 - i; j++) //一趟冒泡排序法的实现
//没比较一趟,数组最后面的值就定好了,就少比较一次
{
//每一趟都把较大的值放到下面
if (arr[j] > arr[j + 1])//两个相邻元素进行比较
{
k = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = k;
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
}