c语言中什么叫气泡法排序 c++气泡排序法

C语言中什么叫气泡法排序?

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

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

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

思路:

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

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

在函数和数组中

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

#include <stdio.h>

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

int main()

{

int froth[10];

int i;

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

{

scanf(“%d”,&froth[i]);

}

Bubble(froth);//数组址传递

return 0;

}

void Bubble(int foam[])

{

int t;

int j,k;

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

{

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

{

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

{

t = foam[k];

foam[k] = foam[k+1];

foam[k+1] = t;

}

}

}

putchar(‘n’);

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

{

printf(“%3d”,foam[j]);

}

}

在数组中

#include <stdio.h>

void main()

{

int a[8];//定义数组

int i,k;

int t;//替换变量

printf(“输入8个整数:”);

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

{

scanf(“%d”,&a[i]);

}

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

{

for(i=0;i<7-k;i++)

{

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

{

t = a[i];

a[i] = a[i+1];

a[i+1] = t;

}

}

}

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

{

printf(“%dn”,a[i]);

}

}

延伸阅读

请教下用冒泡法对数组a进行由小到大的排序,怎样实现?

#include <stdio.h>int main(){int i,j,t,n,a[100];scanf(“%d”,&n); //共n个数for(i=0;i<n;i++) scanf(“%d”,&a[i])

; //读入for(i=0;i<n-1;i++) //冒泡排序 for(j=0;j<n-1-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<n;i++) //输出 printf(“%d “,a[i]);return 0;}

冒泡排序原理?

冒泡法是一种简单的排序方法,它的实现非常简单。首先对n个项目进行扫描,比较相领两个项目的大小,若发现违背大小次序则进行互换,由此可以使n个项目中的最大者换到最后。

冒泡排序算法原理

1、从后往前依次比较相邻的元素。若是要按照升序排序,则后面的元素比前面的小,就交换这2个元素;降序则相反。

2、对每一对相邻元素作同样的工作,从第一对到最后一对。进行一轮比较交换下来,最后的元素就会是最小(或最大)的数了,这个数就不用参与后面的比较操作了。

3、针对所有的元素重复以上的步骤。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

原理:是将前后数组内的两个元素进行比较(我们这个例子进行升序排序,降序排序原理相同),大的元素位置往后调整,后面元素依次执行。

冒泡排序时间复杂度总结?

冒泡排序是一种计算机应用中的排序算法。

即对于有n个数的待排序数列(假如要求最后是从小到大排列),依次比较两个相邻的数,如果前者大于后者就交换这两个数的位置,这样完成第一轮比较后,最后一个数将是最大的数。

如果数列初始状态就是正序的,只消进行一轮排序就可完成要求,即冒泡排序最好情况下的时间复杂度为O(n)。

如果初始是倒序的,就要重复进行n-1轮排序才能完成,每趟排序要进行n-i次相邻数的比较(1≤i≤n-1),因此冒泡排序最差情况下、以及平均的时间复杂度都是O(n2)。

冒泡排序的规则?

1)基本思想

冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。

算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。

(2)运行过程

冒泡排序算法的运作如下:

1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。

3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。

4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。

版权声明