冒泡排序法讲解
用自然语言描述冒泡排序思想?
用自然语言描述冒泡排序思想?
1.冒泡排序是交换排序中一种简单的排序方法。
它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]gta[j 1]),则将其交换,最终达到有序化
其处理过程为:
(1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。
(2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上”飘浮”(左移),关键字值大的记录好像石块,向下“堕落”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列。
C语言中什么叫气泡法排序?
C语言冒泡排序(起泡法)
冒泡法排序是C语言中较简单的排序算法。
定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。如此反复,直到没有可以交换的元素,(即从小到大排序好)。
思路:
有n个数,每轮替换一个数,假设最大的数在第一个,则一共需要替换n-1轮;此时最大数已经在最下面,
所以第二轮替换少一轮,以此类推;
在函数和数组中
/*对输入的数进行从小到大排序*/
#include ltstdio.hgt
void Bubble(int foam[])//冒泡排序
int main()
{
\tint froth[10]
\tint i
\tfor(i=0ilt=9i )//动态赋值
\t{
\t\tscanf(#34\%d#34,ampfroth[i])
\t}
\tBubble(froth)//数组址传递
return 0
}
void Bubble(int foam[])
{
\tint t
\tint j,k
\tfor(j=0jlt9j )//进行9轮循环
\t{
\t\tfor(k=0klt9-jk )//减去循环的轮数
\t\t{
\t\tif(foam[k]gtfoam[k 1])//假设前面的数大于后面的数,如果真,则替换;
\t\t\t{
\t\t\t\tt = foam[k]
\t\t\t\tfoam[k] = foam[k 1]
\t\t\t\tfoam[k 1] = t
\t\t\t}
\t\t}
\t}
\tputchar(#39\
#39)
\tfor(j=0jlt=9j )//输出替换好的值
\t{
\t\tprintf(#34=#34,foam[j])
\t}
}
在数组中
#include ltstdio.hgt
void main()
{
\tint a[8]//定义数组
\tint i,k
\tint t//替换变量
\tprintf(#34输入8个整数:#34)
\tfor(i=0ilt=7i )//数组赋值
\t{
\t\tscanf(#34\%d#34,ampa[i])
\t}
\tfor(k=0klt7k )
\t{
\t\tfor(i=0ilt7-ki )
\t\t{
\t\t\tif(a[i]gta[i 1])
\t\t\t{
\t\t\t\tt = a[i]
\t\t\t\ta[i] = a[i 1]
\t\t\t\ta[i 1] = t
\t\t\t}
\t\t}
\t}
\tfor(i=0ilt=7i )//输出
\t{
\t\tprintf(#34\%d\
#34,a[i])
\t}
}