一.什么是冒泡数列?
1.冒泡数列就是元素按ASCII码值从小到大排序的数列,由于很像水中泡泡向上冒出的形态,所以叫冒泡数列,如图:
二.如何将一个数列转换成冒泡数列?
答:使用冒泡排序即可将一个乱序的数列转换成冒泡数列。
冒泡排序即按ASCII码值把元素从小到大排序,要实现冒泡排序,我们可以写一个这样的函数:
void pao(int sz,int arr[])
{
int i = 0;
for (int i = 0; i < sz - 1; i++)
{
int j = 0;
int key = 1;
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;
key = 0;
}
}
if (key == 1)
{
break;
}
}
}
这个函数是针对一维数组的,从函数的变量类型(int arr[])可以看出。其中的sz是数组的长度,arr[]是你想冒泡排序的数组。
三.原理
原理其实很简单,就是将数组相邻的两个元素进行比较,如果前一个元素比较大,就把他和后一个元素交换位置。
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
key = 0;
}
这一部分其实就是在进行这一操作。
而外层的循环则是用来重复这一操作的。
四.扩展
除了整形类型,还有其他类型能用冒泡排序吗?
其实都行,甚至结构体也能进行冒泡排序,ASCII码表上的所有元素都可以按ASCII码值来排序,但是字符串要用strcmp函数进行比较,结构体则要分数字和字符串来比较。
完
标签:tmp,arr,数列,int,冒泡排序,学习,冒泡,使用 From: https://blog.csdn.net/bitenum/article/details/143286328