字母冒泡法排序c语言,C语言冒泡排序法的实现(升序排序法)

任务代码:

数字的排序:

#include

#define SIZE 10

int main()

{

int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};//十个数的无序数列

int i,j,t;

printf("此程序使用冒泡排序法排列无序数列!\n");

//冒泡排序

for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次

{

for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束

{

if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)

{

t=a[j+1];

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

a[j]=t;

}

}

}

printf("排列好的数列是:\n");

//输出排列好得吃数列

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

{

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

}

return 0;

}

字符排序:

#include

#define SIZE 10

int main()

{

char a[SIZE]={'i','l','o','v','e','y','o','u','y','x'};//十个数的无序数列

int i,j;

char t;

printf("此程序使用冒泡排序法排列无序数列!\n");

//冒泡排序

for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次

{

for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束

{

if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)

{

t=a[j+1];

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

a[j]=t;

}

}

}

printf("排列好的字符组是:\n");

//输出排列好得吃数列

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

{

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

}

return 0;

}

用函数来解决这个问题:

#include

void function(char a[],int);//尤其注意,此处的函数声明必须是char a[],因为这里穿的是地址,不能仅仅使用char

int main()

{

int i;

char a[10]={'i','l','o','v','e','y','o','u','y','x'};//十个数的无序字符数列

printf("此程序使用冒泡排序法排列无序数列!\n");

function(a,10);//调用冒泡排序

printf("排列好的字符组是:\n");

//输出排列好得吃数列

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

{

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

}

return 0;

}

void function(char a[],int m)

{

//冒泡排序

int i,j;

char t;

for(i=0;i

{

for(j=0;j

{

if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)

{

t=a[j+1];

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

a[j]=t;

}

}

}

return;

}

执行情况:

2fb4fb2d09391d4bc232ea4f10c040c5.png

b3b7b09e755fd12f2e65e7483f21c44a.png

知识总结:

冒泡排序法:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!!

af88f584a797e5ecb4d51e9d5262487c.png

对上面的过程进行总结:

ac8b90b9eb60ff55d18a0751e3171547.png

该思想体现在成续上的解法是:

e11879d582ca97e1b98474fe8cf9fabe.png

实例:

3f57da8a3202ce8f91aee7b99b4bb1e0.png

冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序:

1af32e5c917b9b53b7b33d3d50a33058.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值