网站建设资讯

NEWS

网站建设资讯

c语言冒泡排序头函数 c语言冒泡排序头文件

C语言冒泡排序算法 要用函数

从小到大排序

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、做网站、龙泉网络推广、微信平台小程序开发、龙泉网络营销、龙泉企业策划、龙泉品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供龙泉建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

void paixu(double a[],int N)

{

double temp;

int i,j;

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

{

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

{

if(a[i]a[j])

{temp=a[i];a[i]=a[j];a[j]=temp;}

}

}

}

把楼上的改改,减少浪费,欢迎拍砖

C语言冒泡排序法代码

冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明

冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。

1.这个算法用rand函数产生新的要排序的数据,与已有的有序数列中的数据依次比较,如果遇到比他大的数据,就从该数据开始,一直交换到末尾,达到一个插入的效果。从而形成有序的数列。

2.此外,只用rand函数并不能达到真正随机的效果。如果要实现真正随机的效果,还要配合srand函数才行。

3.具体代码如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("请输入一个种子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。

C语言的“冒泡排序”怎么做?sort(str)什么意思?

对于冒泡:

可以这样考虑

外层循环式控制一共有多少个泡需要排序, 这个当然要用循环

内层循环控制把某一个泡放到正确的位置, 这个也要用循环, 因为这个泡要和所有未排序泡比较一遍, 然后才能知道自己应该处的位置

这里有两个点,明白了的话,这道题就明白了

1. 外层循环: 仅仅控制一共有多少个泡需要排序, 比如代码中a[10], 一共是10个元素

2. 内层循环: 仅仅控制把当前最大的泡放到最后, 也就是一次内层循环,仅仅把最大的那个泡放到最后了而已

把1和2综合起来看

当j=0时,把a数组10个元素中最大的泡放到最后

当j=1时,把a数组10个元素中第二大的元素放到倒数第二个位置

依次类推..直到第10大的元素,即最小的元素放到正数第一个位置

楼主可以这样测试一下,会更加清晰,把第一个循环去掉, 内层循环改为:

for(i=0; i 10; i++) 相当于仅执行上述j=0的一次内层循环, 这个循环的作用是把最大的元素放到最后

在解释下内层循环为什么是 i10-j 其实这个不难理解

当j=0时, 相当于 for(i=0;i10;i++) 也就是遍历所有元素,把最大的放到最后

当j=1时, 相当于 for(i=0;i9;i++) 这次仅仅遍历前9个元素,把前9个元素中最大的放到第九个位置, 因为第10个位置已经是最大的了,不用再次比较了.

如果实在是对嵌套循环理解不了,还有个简单的办法,把外层循环解开:

也就是可以这么写:

//----------------------------------------

for(i=0;i10;i++) //等价于j=0

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

{

temp=a[i];

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

a[i+1]=temp;

}

for(i=0;i9;i++) //等价于j=1

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

{

temp=a[i];

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

a[i+1]=temp;

}

...//同上,仅仅是把i后面的值递减,直到

for(i=0;i1;i++) //等价于j=9

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

{

temp=a[i];

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

a[i+1]=temp;

}

上面这一系列代码,等价于原来的双层嵌套循环

sort(str) 就是用户自定义的冒泡排序函数的函数名,str作为函数参数

急需一个用C语言函数写的冒泡排序法,最好是可以排数字也可以排字母

#includestdio.h

#includestdlib.h

void mao_pao(int *a,int n)

{

int i,j,temp,flag;

for(i=0;in-1flag;++i)

{

flag=0;

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

{

if(a[j]a[j+1])

{

flag=1;

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

void main()

{

int *a,i,n;

a=(int *)malloc(100);

if(NULL==a)

{

printf("allocation failture\n");

exit(1);

}

printf("请输入你要排序的元素的个数\n");

scanf("%d",n);

printf("现在开始输入%d个元素\n",n);

for(i=0;i!=n;++i)

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

mao_pao(a,n);

printf("排序后为:\n");

for(i=0;i!=n;++i)

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

printf("\n");

free(a);

}

这是排数字的,要排字母的话,只需把a的类型改一下,和输出输入的格式改一下就ok了


网站栏目:c语言冒泡排序头函数 c语言冒泡排序头文件
新闻来源:http://cdweb.net/article/dosjdsg.html