大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1.区别:
两者最大的区别在于算法本身。
冒泡法是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可以作相对位置的调整。可以进行升序或降序排序。
选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。
2.冒泡法:
算法分析: 如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。
代码如下(对10个整数进行升序排序):
#include<stdio.h>
int main()
{
int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};
//排序
for(i=1;i<10;i++) //外循环控制排序趟数,n个数排n-1趟
{
for(j=0;j<10-1;j++) //内循环每趟比较的次数,第j趟比较n-i次
{
if(a[j]>a[j+1]) //相邻元素比较,逆序则交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排序后的结果是:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
3.选择法:
算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。
代码如下(对10个整数进行升序排序):
#include<stdio.h>
int main()
{
int i,j,min,t,a[10]={2,4,8,3,6,9,7,222,64,88};
printf("排序前的序列为:\n");
for(i=0;i<10;i++) //输出排序前的序列
{
printf("%5d",a[i]);
}
printf("\n");
for(i=0;i<9;i++)
{
min=i; //把每次循环的第一个数作为最小值
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
min=j; //交换
}
if(min!=i) //说明第一个数不是最小数,所以将a[i+1]~a[10]中最小值与a[i]对换
{
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
printf("排序后的序列为:\n");
for(i=0;i<10;i++) //输出排序后的序列
printf("%5d",a[i]);
printf("\n");
return 0;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180310.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...