分别用冒泡法和选择法对10个整数排序_c语言数组从大到小冒泡排序

分别用冒泡法和选择法对10个整数排序_c语言数组从大到小冒泡排序1.区别:      两者最大的区别在于算法本身。       冒泡法是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可以作相对位置的调整。可以进行升序或降序排序。        选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。2.冒泡法:…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180310.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于遗传算法的函数极值求取_遗传算法计算二元函数最大值

    基于遗传算法的函数极值求取_遗传算法计算二元函数最大值前面在《遗传算法通识》中介绍了基本原理,这里结合实例,看看遗传算法是怎样解决实际问题的。有一个函数:f(x)=x+10sin5x+7cos4xf(x)=x+10\sin5x+7\cos4x求其在区间[-10,10]之间的最大值。下面是该函数的图像:在本例中,我们可以把x作为个体的染色体,函数值f(x)作为其适应度值,适应度越大,个体越优秀,最大的适应度就是我们要求的最大值。

    2025年11月7日
    3
  • 初次使用cocoapods注意事项「建议收藏」

    初次使用cocoapods注意事项

    2022年2月1日
    41
  • 分类模型的f1值大概是多少_准确率召回率f1分数

    分类模型的f1值大概是多少_准确率召回率f1分数欢迎您对PaddleHub提出建议,非常感谢您对PaddleHub的贡献!目前PaddleHub已实现您提出的需求,请安装PaddleHub>=1.7.0,PaddlePaddle>=1.8.0快速体验。请您在定义task任务时增加metrics_choices=[‘f1’]选项,即可实现多分类F1Score评估指标,示例如下:task=hub.ImageClassifierT…

    2022年10月14日
    1
  • 5g切片技术详解_5G切片SLA

    5g切片技术详解_5G切片SLA网络切片是5G网络的关键特征,可以在共享的基础设施上构建专用的逻辑网络。5G网络切片代表了一种网络架构,它允许独立和虚拟化的逻辑网络复用同一个物理网络基础设施。每个切片都是一个独立的端到端网络,以满足特定应用程序的各种需求。其实,切片在5G中并不是一个新概念,在4G中也存在(例如,APN、MORAN和GWCN),但其能力有限,因为它们不像在5G中那样支持完整的端到端解决方案。简单起见,假设运营商网络是一块大蛋糕,我们将其分成几片。每片包含整个网络的一部分,包括无线网络、传输网络和核心网络。此外,。。…

    2022年10月3日
    2
  • jenkins自动触发构建_秒级定时触发器

    jenkins自动触发构建_秒级定时触发器前言跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。jenkins的定时任务是用的crontab语法定时构建语法

    2022年7月29日
    9
  • 网站挂马检测_域名拦截检测网站

    网站挂马检测_域名拦截检测网站网站挂马检测工具,网站挂马如何检测,如何检测网站挂马在最近的一次网站优化项目中,我负责的一个网站出现了网站被挂马问题,所以网站的关键词排名很快就从首页消失了。把网站挂马问题解决后,花费了很多的精力才让关键词排名恢复。在seo公司工作期间,经常听到同事说起网站挂马的危害,因为没有切身体会,所以并没有太多感触。突然网站挂马的问题落到了自己负责的项目上,这才意识到网站挂马问题真的很不简单,在平时…

    2022年9月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号