c语言起泡方法,c语言冒泡法详解

本文目录一览:

c语言中起泡法和选择法有什么不同,急!,谢谢!

 

两者最大的区别在于算法本身。

起泡法(冒泡法)是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。

选择法是每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。

    一、冒泡法(起泡法)

1、算法示例:用起泡法对10个整数按升序排序。

2、算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

3、算法原码

   #include stdio.h

int main()

{

int a[10],i,j,t;

printf(“Please input 10 numbers: “);

/*输入源数据*/

for(i=0;i10;i++)

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

/*排序*/

for(j=0;j9;j++)          /*外循环控制排序趟数,n个数排n-1趟*/

for(i=0;i9-j;i++)    /*内循环每趟比较的次数,第j趟比较n-j次*/

if(a[i]a[i+1])    /*相邻元素比较,逆序则交换*/

{ t=a[i];

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

a[i+1]=t;

}

/*输出排序结果*/

printf(“The sorted numbers: “);

for(i=0;i10;i++)

printf(“%d   “,a[i]);

printf(“\n”);

return 0;

}

二、选择法

1、算法示例要求:用选择法对10个整数按降序排序。

2、算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。

3、算法源代码:

 #include stdio.h

int main()

{

int a[10],i,j,k,t,n=10;

printf(“Please input 10 numbers:”);

for(i=0;i10;i++)

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

for(i=0;in-1;i++)   /*外循环控制趟数,n个数选n-1趟*/

{

k=i;             /*假设当前趟的第一个数为最值,记在k中 */

for(j=i+1;jn;j++)  /*从下一个数到最后一个数之间找最值*/

if(a[k]a[j])     /*若其后有比最值更大的*/

k=j;         /*则将其下标记在k中*/

if(k!=i)        /*若k不为最初的i值,说明在其后找到比其更大的数*/

{  t=a[k];  a[k]=a[i];  a[i]=t;  } /*则交换最值和当前序列的第一

个数*/

}

printf(“The sorted numbers: “);

for(i=0;i10;i++)

printf(“%d   “,a[i]);

printf(“\n”);

}

C语言中冒泡排序法(又称起泡排序法)得具体程序

冒泡法我是这样理解的,便于掌握和记忆。首先冒泡是n长度的数组开始的两位开始,逐位双双比较一直到最后两个,所以最外循环比较了n-1次。第一个数比较了以后就不比了,从第二个开始,一直比较到数组末尾,于是内循环的起始位置不同,每次都是外侧i的值加0,也就是i。但结束的限制和外层循环是相同的。于是写法为for (i=0;in-1;i++)

{

for(j=i;jn-1;j++)

C语言 起泡法

本程序是由小到大排序;

语句:

for (j=1;j=9;j++)

for(i=1; i=10-j; i++)

是先内循环再外循环;j是为循环语句for(i=1; i=10-j; i++)判断数组a[i]与a[i+1]大小时用的辅助“标记”。当j=1时,for(i=1; i=10-j; i++)语句中的i循环9次(因为10-j=9),把数组a[i]最大的值赋给a[10];

当j=2时,for(i=1; i=10-j; i++)语句中的i循环8次,把第二个最大值赋给a[9];

当j=9时,for(i=1; i=10-j; i++)语句中的i循环1次,把最小值赋给a[1],第二个最小值赋给a[2]。

关于c语言的起泡法

从左到右俩俩比较 大的数放在右边

75830

当前的第一个数和第二个数比较 7和5比较7大 交换7在右 57830

当前的第二个数和第三个数比较 7和8比较8大 不变8在右 57830

当前的第三个数和第四个数比较 8和3比较8大 交换8在右 57380

当前的第四个数和第五个数比较 8和0比较8大 交换8在右 57308

以上是一次内层的for循环也就是第一轮 结果是最大的数8到了最右面

除最大数8外的其他元素相对位置发生了改变

外层for循环第二轮 53078 7右2 530三个数相对位置不变

第三轮 30578 5右3 30俩数相对位置不变

第四轮 03578 3右4

在c语言中何为起泡法,请高手给详细解释一下

你说的可能是冒泡排序。这种算法是很简单的,他就是先处第一个数与其它数比较,小的排在前面,一轮下来最小的数就找到了,然后再用第二个数与剩余的数比较,以此类推。(其中要用到递归的思想)

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/256826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:42
下一篇 2024-12-15 12:42

相关推荐

  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29

发表回复

登录后才能评论