冒泡法排序的相关问题 港控/mmm° 2022-09-18 10:58 250阅读 0赞 /***************************************************** * 用冒泡法进行排序遇到的一系列问题 * * * * * *****************************************************/ #include<stdio.h> int main(void) { int a[10],i,j,b=0,flag; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]<a[j+1]) { b=a[j]; a[j]=a[j+1]; a[j+1]=b; } for(i=0;i<10;i++) printf("%d\n",a[i]); } //注意输入的时候不能用逗号隔开,逗号视为一个字符,会使得运算出错!!! //该算法是比较常规的算法,但是有一个弊病,就是如果数据正好是顺序时,也会照样执行,因此可以进行进一步的改进 #include<stdio.h> void main() { int a[10],i,j,b=0,flag=0; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) { flag=0; for(j=0;j<9-i;j++) if(a[j]<a[j+1]) { b=a[j]; a[j]=a[j+1]; a[j+1]=b; flag=1; } if (flag==0) break; } for(i=0;i<10;i++) printf("%d\n",a[i]); } //上面的改进方法避免了顺序时重复的比较,节约时间 //对字符进行冒泡法排序 #include<stdio.h> int main(void) { char a[10],x; int i,j; for(i=0;i<10;i++) scanf("%c",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]<a[j+1]) { x=a[j]; a[j]=a[j+1]; a[j+1]=x; } for(i=0;i<10;i++) printf("%c\n",a[i]); } //这里输入字符时,空格和回车都会视为字符,很纠结,可以直接连续输入,或者以字符串的形式输入! #include<stdio.h> int main(void) { char a[11],x; int i,j; gets(a); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]<a[j+1]) { x=a[j]; a[j]=a[j+1]; a[j+1]=x; } for(i=0;i<10;i++) printf("%c\n",a[i]); } //可以实现字符的冒泡排序 #include<stdio.h> #include<string.h> int main(void) { char str[5][10],a[2][10]; int i,j,m; for(i=0;i<5;i++) gets(str[i]); for(i=0;i<4;i++) for(j=0;j<4-i;j++) for(m=0;m<10;m++) if(str[j][m]<str[j+1][m]) { strcpy(a[0],str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],a[0]); } for(i=0;i<5;i++) { puts(str[i]); printf("\n"); } } //一维数组还真不好实现咧,二维数组可以用双重for循环尝试一下! //有点问题,就是遇到不等长的字符数串比较的时候会出现错误,等待进一步修改。 //其实比较字符串,排序可以调用函数,strcmp(str1,str2),str1>str2时,返回值1,str==str2时,返回值0,str1<str2时,返回值-1. #include<stdio.h> #include<string.h> int main(void) { char str[5][10],a[2][10]; int i,j,flag,k=0; for(i=0;i<5;i++) gets(str[i]); for(j=0;j<4;j++) { flag=0; for(i=0;i<4-j;i++) { k=strcmp(str[i],str[i+1]); if(k==-1) { strcpy(a[0],str[i]); strcpy(str[i],str[i+1]); strcpy(str[i+1],a[0]); flag=1; } } if(flag==0) break; } for(i=0;i<5;i++) puts(str[i]); }
相关 冒泡排序法 冒泡排序法 1. 算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元 爱被打了一巴掌/ 2022年10月14日 14:56/ 0 赞/ 201 阅读
相关 冒泡排序法 package com.wdl.day07; import java.util.Arrays; / @创建人 wdl @创建时间 r囧r小猫/ 2022年09月04日 01:45/ 0 赞/ 237 阅读
相关 冒泡法排序 冒泡法排序是一种比较简单的排序算法,但同时它也是一种效率比较低的排序算法。 当要将元素进行单调非减排序时,冒泡法排序的基本过程为: ![Center][] 其基本思 你的名字/ 2022年08月04日 01:59/ 0 赞/ 204 阅读
相关 冒泡排序法 冒泡排序法 \ 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 \ 比如:2,4,1 // 第一次 冒出的泡是4 \ 2,1,4 // 第 爱被打了一巴掌/ 2022年07月13日 07:16/ 0 赞/ 196 阅读
相关 冒泡排序法 /冒泡排序法/ include<stdio.h> include<time.h> define N 10 main() { 电玩女神/ 2022年06月14日 08:57/ 0 赞/ 263 阅读
相关 冒泡排序法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</ 红太狼/ 2022年05月20日 02:59/ 0 赞/ 282 阅读
相关 冒泡排序法 根据冒泡排序法将数组中的数从大到小排列 第一次代码: include<stdio.h> include<stdlib.h> / 冒泡排序法 / 亦凉/ 2022年04月15日 00:56/ 0 赞/ 254 阅读
相关 冒泡排序法 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pbmlv 小鱼儿/ 2021年11月02日 14:50/ 0 赞/ 364 阅读
还没有评论,来说两句吧...