求关于c语言 冒泡排序法的讲解

作者&投稿:谷拜 (若有异议请与网页底部的电邮联系)
求解c语言冒泡排序法,两个for循环里到底是什么~

这个应该到网上去搜索啊,不该在这问。冒泡排序的原理就是:(升序) 依次比较相邻的2个数,把较大的值放在后面,使最后一个数变成数组中的最大值。 循环这个过程,直到所有的数据都按这个规则排列好。此时,排序完毕。举例:3,2,5,7,1 (升序) 1. 3与2比较,交换 ,数组:2,3,5,7,1 2. 3与5比较, 不交换, 数组: 2,3,5,7,1 3. 5与7比较, 不交换, 数组: 2,3,5,7,1 4. 7与1比较, 交换 , 数组: 2,3,5,1,7 第一次遍历比较完成,此时,最后一个数据就是最大值了。 此后的比较,只要比较2,3,5,1即可,因为最后一个已经是最大的了。 然后再按这个规则循环。 代码的话: #include int main() { int i, j, t; int a[] = {3,2,5,7,1}; int len = 5; //数组长度5 //外层循环,就是按照这个算法:控制需要最多几次循环才能排序完毕 for (i=0;ia[j+1]) {//相邻2个做比较 t = a[j];a[j]=a[j+1];a[j+1]=t; //交换 } } } } 此即冒泡法排序。当然,冒泡还有一些变种,如:增加标志,如果某次循环中,没发生一次交换,则说明已经排序完毕。则结束循环,这样可以加快速度。

1、打开Visual Studio工具并创建一个新的Win32程序。

2、在打开的C语言文件中,导入stdio.h空间,然后准备一个main函数。

3、接下来,准备一个需要进行冒泡排序的整数数组。如下图所示,数组中数字的顺序是不正常的。

4、接下来,准备变量,准备好的变量用于对交互数据进行排序。

5、然后我们准备两个for循环数组,我们需要注意外循环和内循环。

冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有
些类似。其具体做法是

(1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果
a(n)<a(n-1),则两个数交换位置。

然后比较第n-1个和第n-2个数据;依次类推,直到第2个数据和第1个数据
进行比较交换,这称为一趟冒泡。这一趟最明显的效果是:将最小的数据传到了
第1位。

由此还可推断出,对于n个数,一趟应该进行n-1 次比较操作。算法流程如
下图所示:

(2)然后,对2至n个数据进行同样操作,则具有次小值的数据被安置在第2位
上。

(3)重复以上过程,每次的移动都向最终排序的目标前进,直至没有数据需要交换为止。

这种排序的方法被形象地比喻成“冒泡”,在排序过程中,小的数就如气泡一般逐层上冒,而大的数逐个下沉。

水中的气泡,小的气泡在下面,大的在上面,小的气泡合成大的气泡后才浮出水面,冒泡法(起泡法)因此得名。
冒泡法的基本思想为:将一系列数从左至右,相邻比较小的放到前面,大的在后,一轮下来,最大的数在最后(不进行第二轮比较),第二轮又从第一个数开始从左至右,相邻比较,小的在前大的在后,如此往复,得到一个由小到大的系列。
算法如下:
1. 输入N个数给a[1],a[2],...,a[n];
2. for i=1 to n-1;
3. for j=1 to n-i(大数不进行下一轮比较);
4. 判断a[j]>[j+1] ? 如果是,交换a[j]和a[j+1];
5. 输出a[1]到a[n].

int ch[N+1];
for(int i=0;i<N;i++)
//第一次循环找出最小的;第2次循环找出第2小的,直至找到最大的
{for(int j=i+1;j<N;j++)
{if(ch[i]>ch[j])
{ch[N]=ch[i],ch[i]=ch[j],ch[j]=ch[N];}
}}

深刻理解一下


萝岗区13085475677: 求关于c语言 冒泡排序法的讲解 -
房肩妥星: 冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有 些类似.其具体做法是(1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果 a(n)<a(n-1),则两个数交换位置. 然后比较第n-1个和第n-2个数据;依次...

萝岗区13085475677: 请讲解下C语言的冒泡排序法 -
房肩妥星: 冒泡法,就是通过多次循环排序的一种方法. 第一次循环,让最小(最大)的值浮到第一位, 第二次循环,让剩余的数字中最小(最大)浮到第二位 依次类推. 这种方法就像水泡上浮一样,顾名.

萝岗区13085475677: C语言冒泡排序法是怎么排序的? -
房肩妥星: C语言冒泡排序法的排2113序规则:5261将被排序的记录4102数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡1653.根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"...

萝岗区13085475677: c语言冒泡排序法 -
房肩妥星: (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换.(2)实例...

萝岗区13085475677: 在C语言编程中什么叫“冒泡法”?具体解释一下,真心谢谢 -
房肩妥星: 排序用的,比如有三个数613从小到大排序,用冒泡法就是先把6和1比较把6(即大的那个数放到1的后面)现在就变成163然后再把6和3进行比较,再把大的数放到后面这样就变成136,在进行第二次比较,把1和3进行比较大的数再放在后面,这样136就排出来了!这样四个数 五个数 六个数 n个数的排序都可以按照这样的方法!用C语言实现需要两个循环,一个内循环和一个外循环,内循环就是指你不断把把两个数比较大小并把大的数放在后面的过程,执行完后你会发现最大的数是在最后了!但前面的数顺序认识乱的,你就需要第二次排序,经过第二次排序后你会发现第二大的数已经排在倒数第二的位置了,以此类推,想这样的循环就是外循环

萝岗区13085475677: c语言冒泡排序详解 -
房肩妥星: #include#define MAXE 20 typedef char KeyType; typedef char InfoType[10]; typedef struct { KeyType key; InfoType data; }RecType; void bubblesort(RecType R[],int n) { int i,j,k; RecType temp; for(i = 0; i i;i--) if(R[j].key

萝岗区13085475677: c语言中冒泡法是什么意思? -
房肩妥星: 冒泡法是一种排序方法 冒泡法5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列, 从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5和4换位,得到45321 5又比3大 5和3换位 得到43521 依次类...

萝岗区13085475677: C语言:编写一个程序用冒泡排序实现升序排列 -
房肩妥星: 1、首先打开一个空白的C语言文件,首先先定义一组待排序的数列以及各个变量,接着就是用来处理排序的逻辑: 2、冒泡排序的逻辑是一组数从第一个数值开始,如果相邻两个数的排列顺序与期望不同,则将两个数的位置进行交换,重复这样的过程直到最后一个数不需要交换则排序完成,如果有N个数需要排序,则需要进行(N-1)趟的比较: 3、最后编译运行程序,观察最终排序的结果,可以看到数字被从小到大的排列好了,以上就是C语言冒泡排序实现的过程:

萝岗区13085475677: c语言冒泡排序详解
房肩妥星: #include<stdio.h> #define MAXE 20 typedef char KeyType; typedef char InfoType[10]; typedef struct { KeyType key; InfoType data; }RecType; void bubblesort(RecType R[],int n) { int i,j,k; RecType temp; for(i = 0; i <n-1; i++){ for(j=n-1;j>i;i--) if(R[j].key<...

萝岗区13085475677: 关于C语言冒泡排序法要详解 -
房肩妥星: #include void main(){int a[10]={8,9,1,6,4,2,7,3,5};int i,j,k;//for(i=0;i<8;i++)for(j=0;j<10;j++){ if(a[j]>a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网