C语言冒泡排序(起泡法)

冒泡法排序是C语言中较简单的排序算法。

定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。如此反复,直到没有可以交换的元素,(即从小到大排序好)。

思路:

有n个数,每轮替换一个数,假设最大的数在第一个,则一共需要替换n-1轮此时最大数已经在最下面

所以第二轮替换少一轮,以此类推

在函数和数组中

/*对输入的数进行从小到大排序*/

#include <stdio.h>

void Bubble(int foam[])//冒泡排序

int main()

{

int froth[10]

int i

for(i=0i<=9i++)//动态赋值

{

scanf("%d",&froth[i])

}

Bubble(froth)//数组址传递

return 0

}

void Bubble(int foam[])

{

int t

int j,k

for(j=0j<9j++)//进行9轮循环

{

for(k=0k<9-jk++)//减去循环的轮数

{

if(foam[k]>foam[k+1])//假设前面的数大于后面的数,如果真,则替换

{

t = foam[k]

foam[k] = foam[k+1]

foam[k+1] = t

}

}

}

putchar('n')

for(j=0j<=9j++)//输出替换好的值

{

printf("%3d",foam[j])

}

}

在数组中

#include <stdio.h>

void main()

{

int a[8]//定义数组

int i,k

int t//替换变量

printf("输入8个整数:")

for(i=0i<=7i++)//数组赋值

{

scanf("%d",&a[i])

}

for(k=0k<7k++)

{

for(i=0i<7-ki++)

{

if(a[i]>a[i+1])

{

t = a[i]

a[i] = a[i+1]

a[i+1] = t

}

}

}

for(i=0i<=7i++)//输出

{

printf("%dn",a[i])

}

}