导航:首页 > 编程语言 > c冒泡排序编程

c冒泡排序编程

发布时间:2022-09-25 03:47:48

1. C语言:编写一个程序用冒泡排序实现升序排列

1、首先打开一个空白的C语言文件,首先先定义一组待排序的数列以及各个变量,接着就是用来处理排序的逻辑:

2. C语言冒泡排序(数组)

按照你的要求编写的C语言冒泡排序的程序如下

#include<stdio.h>

intmain(){

inti,j,k,T,n,tmp;

scanf("%d",&T);

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

scanf("%d",&n);

inta[n];

for(j=0;j<n;j++){

scanf("%d",&a[j]);

}

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

for(k=0;k<n-1-j;k++){

if(a[k]>a[k+1]){

tmp=a[k];

a[k]=a[k+1];

a[k+1]=tmp;

}

}

for(k=0;k<n;k++){

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

}

printf(" ");

}

}

return0;

}


运行结果
输入2
输入51044312
输出
4101243
4121043
1241043
1241043
输入10201231224345424523-10
输出
201221235424523-10434
122205424523-10123434
2122024523-1054123434
21222023-104554123434
221220-10234554123434
2212-1020234554123434
22-101220234554123434
2-1021220234554123434
-10221220234554123434

3. C语言,5个数按从大到小排序,冒泡法

正确的程序代码如下:

#include<stdio.h>
#defineN5
voidmain()
{ inta[N],i,j,t;
printf("请输入5位学生的成绩 ");
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+1]<=a[j]){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
printf("成绩由高到低的排序为: ");
for(i=0;i<N;i++)
printf("%d",a[i]);
}

修改两个地方,一是{从if的前面移动到后面,而是判断的内容j和j+1交换。

4. C语言 冒泡排序法的代码

#include<stdio.h>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers: ");

for(i=0;i<10;i++)

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

for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/

for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/

if(a[i]>a[i+1]) /*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/

{

t=a[i];

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

a[i+1]=t;

}

printf("the sorted numbers: ");

for(i=0;i<10;i++)

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


}

(4)c冒泡排序编程扩展阅读:

冒泡排序算法的运作

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

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

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

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

简单的表示

#include <stdio.h>

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 9; j > i; j--)//从后往前冒泡

{

if (a[j] < a[j-1])

{

swap(&a[j], &a[j-1]);

}

}

}

for (i = 0; i < 10; i++)

{

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

}

return 0;

}

参考资料来源:冒泡排序-网络

5. C语言冒泡排序法是怎么排序的

C语言冒泡排序法的排序规则:

将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

  1. 初始 R[1..n]为无序区。

  2. 第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。

    即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。 第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。

  3. 第二趟扫描 扫描R[2..n]。

    扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上…… 最后,经过n-1 趟扫描可得到有序区R[1..n] 注意: 第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R上,结果是R[1..i]变为新的有序区。

6. C语言冒泡排序。

#include<stdio.h>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers: ");

for(i=0;i<10;i++)

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

for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/

for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/

if(a[i]>a[i+1]) /*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/

{

t=a[i];

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

a[i+1]=t;

}

printf("the sorted numbers: ");

for(i=0;i<10;i++)

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


}

(6)c冒泡排序编程扩展阅读:

冒泡排序算法的运作

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

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

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

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

简单的表示

#include <stdio.h>

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 9; j > i; j--)//从后往前冒泡

{

if (a[j] < a[j-1])

{

swap(&a[j], &a[j-1]);

}

}

}

for (i = 0; i < 10; i++)

{

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

}

return 0;

}

参考资料来源:冒泡排序-网络

7. c语言冒泡排序

第一个for是代表从数组的 第前一个元素(设为j)循环到数组最后一个元素。
第二个for代表从j+1个(也就是第j+1个元素到最后一个元素,每一个元素和第j个比较大小,然后换位。
举个例子:比如现在是for到第一个元素,然后第二个for到的第一个的后一个(就是第二个)进行比较,然后换元素。
有什么不懂再问喔

8. c语言编程:对10个数冒泡排序(升序)。

#include<stdio.h>

intmain(){

intnumber[10]={95,45,15,78,84,51,24,12,34,23};

for(int j=0;j< 9;j++)

for(int i=0;i< 9 -j;i++) {

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

int temp=a[i];

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

a[i+1]=temp; }

}

for(int i=0;i< 10;i++){

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

}

插入排序

已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。

首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。

b[2]~b[m]用相同方法插入。

快速排序

快速排序是大家已知的常用排序算法中最快的排序方法。已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。

比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据<a[x],a[k+1]~a[n]中的每一个数据>a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。

希尔排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。

首先取一增量d(d<n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操作,直到d=1。

阅读全文

与c冒泡排序编程相关的资料

热点内容
穿搭技巧app卡色配什么颜色 浏览:589
程序员得结石 浏览:126
查公司薪资的app叫什么 浏览:407
压缩包多个文件夹图片连续看 浏览:480
linuxmysql无法用命令启动 浏览:439
地税身份认证用什么ApP 浏览:529
网址加密后能防止被封网吗 浏览:759
pic单片机项目 浏览:177
oppo手机忘记加密密码忘了怎么办 浏览:151
算法竞赛入门经典代码 浏览:155
多功能防盗加密锁闭阀 浏览:862
遥控灯单片机 浏览:815
网络时间同步算法 浏览:473
单片机p1口怎么检测 浏览:913
pdf高亮颜色 浏览:322
银行程序员的工资多少 浏览:19
服务器如何使用移动硬盘 浏览:533
pc饥荒为什么没有服务器 浏览:442
阿里云服务器地址是什么 浏览:148
如何戒除网瘾app 浏览:955