700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 算法之排序算法(冒泡法和选择法)

算法之排序算法(冒泡法和选择法)

时间:2020-02-14 06:59:56

相关推荐

算法之排序算法(冒泡法和选择法)

本篇文章中,都以十个数排序为例子讲解。

冒泡法是依次从后面确定,而选择法则是依次从前面确定。也就是说,冒泡法先确定最后一个数,再确定倒数第二个,再确定……;选择法先确定第一个数,再确定第二个数,再确定……

1.冒泡法

冒泡法的本质就是将数组中的数字依次两两比较,最后按照由小到大或者由大到小排序。冒泡法的代码基本是两层排序组成,第一层表示趟数,因为是两两比较,所以十个数字需要九躺就可以排完。(例如4,9,3三个数字,需要两趟,第一趟中4和9比较,顺序不变,然后9和3比较,换序;第二趟是4和3比较,换序,这样就变成了3,4,9的顺序);第二层循坏就是比较大小。

# include <stdio.h>int main (){int arr[10]={12,23,123,45,678,89,90,679,999,10};//冒泡法(从小到大) for(int i=0;i<9;i++)//排序主体{for(int j=0;j<9-i;j++){if(arr[j]>arr[j+1]){int temp;temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}} for(int i=0;i<10;i++) //输出{printf("%d ",arr[i]);}return 0;}

# include <stdio.h>int main (){int arr[10]={12,23,123,45,678,89,90,679,999,10};//冒泡法(从大到小)for(int i=0;i<9;i++)//排序主体{for(int j=0;j<9-i;j++){if(arr[j]<arr[j+1]){int temp;temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}for(int i=0;i<10;i++)//输出{printf("%d ",arr[i]);}return 0;}

2.选择法

选择法的本质是在数组中的一个数,依次和其他数比较,换序,最后按照从小到大或者从大到小排序即可。选择算法也是两层循环嵌套,但和冒泡法还是有区别的,第一层循环是数组中的数,第二层循坏是数组中的其他数,通过比较,换序,最后输出。(例如,4,9,3,第一层选择4,然后第二层中和9比较,不换序,然后和3比较,换序,这样第一个数变成了3;再重新循环,9和4比较,换序,然后就排好了,3,4,9)。

# include <stdio.h>int main (){int arr[10]={12,23,123,45,678,89,90,679,999,10};//选择法(从大到小)for(int i=0;i<10;i++) //选择法主体{for(int j=i+1;j<10;j++){if(arr[i]<arr[j]){int temp;temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}} for(int i=0;i<10;i++) //输出{printf("%d ",arr[i]);}return 0;}

# include <stdio.h>int main (){int arr[10]={12,23,123,45,678,89,90,679,999,10};//选择法(从小到大) for(int i=0;i<10;i++) //选择法主体{for(int j=i+1;j<10;j++){if(arr[i]>arr[j]){int temp;temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}} for(int i=0;i<10;i++) //输出{printf("%d ",arr[i]);}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。