首页主机c语言冒泡排序法 c语言选择法和冒泡法的区别

c语言冒泡排序法 c语言选择法和冒泡法的区别

编程之家2024-05-08106次浏览

一、C语言冒泡排序

将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。

c语言冒泡排序法 c语言选择法和冒泡法的区别

根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。

如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

二、excel怎么冒泡排序

①新建一张表,在里面随机录入一些整数,然后添加3种排序方法列表。

②我们实现介绍常用的第一种,也是运用得最频繁的一种,那就是rank排序,这个函数我们再这里就不着赘述,在B2单元格中输入公式:=RANK(A2,A$2:A$22),简单说明下,在对一组数据进行排序时候,需要对列进行绝对引用,这样才不会形成单元格偏移。

③回车之后,B2单元格便会显示A2在所有数据的排序,然后往下进行填充,便会得到用rank函数排序的结果。

④现在我们来介绍第二种方法,利用条件统计函数countif函数,没听错吧,countif函数,真的是它,以前在学习数据结构时候有一种排序的方法叫做冒泡排序,就是依次比较,我们用countif统计出第一个值,然后依次比较得出结果。于是我们在C2单元格中输入公式:=COUNTIF(A$2:A$22,">"&A2)+1。

c语言冒泡排序法 c语言选择法和冒泡法的区别

⑤回车之后,同样得到的结果也是19名,与之前排序结果相同,再往下填充,完成排序。

⑥最后一种利用sum求和函数进行排序,这是一个数组公式,其实原来和countif函数的上路是一致的,只是改变下写法和变换了函数。在D2单元格中输入公式:=SUM(--(A$2:A$22>A2))+1。

⑦这里必要要注意了,由于是数组公式,所以在计算结果的时候需要同时按住Ctrl+shift键+enter键,然后在往下进行填充。

⑧这样,我们就能通过三种不同的函数实现数据的排序功能,其实很多函数的功能不只是它我们所知道的基本那个,根据参数的不同,组合不同,能让其功能扩大不小。

三、c语言如何用冒泡法排序

冒泡排序是排序算法中较为简单的一种,英文称为BubbleSort。它遍历所有的数据,每次对相邻元素进行两两比较,如果顺序和预先规定的顺序不一致,则进行位置交换;这样一次遍历会将最大或最小的数据上浮到顶端,之后再重复同样的操作,直到所有的数据有序。

如果有n个数据,那么需要的比较次数,所以当数据量很大时,冒泡算法的效率并不高。

c语言冒泡排序法 c语言选择法和冒泡法的区别

当输入的数据是反序时,花的时间最长,当输入的数据是正序时,时间最短。

平均时间复杂度:

空间复杂度:O(1)

#include"stdio.h"

voidswap(int*t1,int*t2)

{

inttemp;

temp=*t1;

*t1=*t2;

*t2=temp;

}

voidbubble_sort(intarr[],intlen)

{

inti,j;

for(i=0;i<len-1;i++){

for(j=0;j<len-1-i;j++){

if(arr[j]>arr[j+1]){

swap(&arr[j],&arr[j+1]);

}

}

}

}

intmain()

{

intarr[]={34,27,55,8,97,67,35,43,22,101,78,96,35,99};

inti;

intlen=sizeof(arr)/sizeof(*arr);

bubble_sort(arr,len);

printf("len=%d\n",len);

printf("usebubblesortthearraryis:");

for(i=0;i<len;i++){

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

}

printf("\n");

}

————————————————河南新华

查看qq空间加密相册(如何查看加密qq相册)诺基亚100(诺基亚100是一款什么样的手机)