admin管理员组文章数量:1487745
【C语言】冒泡排序+优化版
先来介绍一下冒泡排序:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
代码语言:javascript代码运行次数:0运行复制冒泡排序顾名思义就是将一些没有顺序的数字排的有顺序:
int main()
{
int a=0; //定义一个接受值
int b[20]={0}; //定义数组,这就是我们后面要用到的排序数组
printf("你要输入多少个值:");
scanf("%d",&a);
for(int d=0;d<a;d++)
{
printf("输入第%d个数:",d+1);
scanf("%d",&b[d]);
}
s_mpqx(b,a);
return 0;
}
代码语言:javascript代码运行次数:0运行复制我们搞定了数组的内容后现在就可以传值和传址,进行排序:
void s_mpqx(int* b[],int a) //数组是传址,统计数是传值
{
int i,j;
int ret=0;
for(i=0;i<a-1;i++)
{
for(j=0;j<a-i-1;j++)
{
if(b[j]>b[j+1])
{
ret=b[j];
b[j]=b[j+1];
b[j+1]=ret;
}
}
}
}
这里需要强调一下,10个数字只需要比9次就可以了,所以要减一(a-1)
而比完一次就少一次,所以在比9次的基础上(a-1-i)
代码语言:javascript代码运行次数:0运行复制当然排序结束,还需要看是否已经排序成功了,完整的代码:
#include <stdio.h>
void s_mpqx(int* b[],int a) //数组是传址,统计数是传值
{
int i,j;
int ret=0;
for(i=0;i<a-1;i++)
{
for(j=0;j<a-i-1;j++)
{
if(b[j]>b[j+1])
{
ret=b[j];
b[j]=b[j+1];
b[j+1]=ret;
}
}
}
}
int main()
{
int a=0; //定义一个接受值
int b[20]={0}; //定义数组,这就是我们后面要用到的排序数组
printf("你要输入多少个值:");
scanf("%d",&a);
for(int d=0;d<a;d++)
{
printf("输入第%d个数:",d+1);
scanf("%d",&b[d]);
}
s_mpqx(b,a);
for(int z=0;z<a;z++)
{
printf("%d ",b[z]);
}
return 0;
}
优化版:
代码语言:javascript代码运行次数:0运行复制在上面排序的过程中,不难发现有很多的步骤是重复的,既浪费时间又无效,这个时候可以让计算机提前去判断是否符号条件,如果符合条件了再进行排序,既省时间又高效:
void s_mpqx(int* b[], int a) //数组是传址,统计数是传值
{
int i, j;
int ret = 0;
int pd=1;
for (i = 0; i < a - 1; i++)
{
pd=1;
for (j = 0; j < a - i - 1; j++)
{
pd=1;
if (b[j] > b[j + 1])
{
ret = b[j];
b[j] = b[j + 1];
b[j + 1] = ret;
pd=0;
}
}
if(pd==1)
{
break;
}
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent 删除排序数组统计优化int我们首先需要让数值进行一次比较,在所有数字都是按照正确的顺序时,pd的值不变,在外层for循环中直接退出即可,省去了多次去比较而浪费时间 这样我们的冒泡排序和优化后的就诞生了,有问题的可以私聊!
本文标签: C语言冒泡排序优化版
版权声明:本文标题:【C语言】冒泡排序+优化版 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754758998a3179243.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论