多种方法实现数组元素从大到小排序;冒泡排序

2023-11-03

实现数组由大到小排列

实现一、数组 - - - 最小数冒泡到最右边

int sort(int a[],int n)
{
        int i,j,temp;
        for(i=0;i<n-1;i++)                   //比较n-1次(第一次循环表示趟数)
        {   
                for(j=0;j<n-i-1;j++)              // 最后一次比较a[n-i-1]与a[n-i-2]   (第二次循环表示比较次数 )
                {   
                        if(a[j]<a[j+1])
                        {   
                                temp = a[j+1];
                                a[j+1] = a[j];
                                a[j] = temp;
                        }
                }
        }

}

int main()
{
        int i,n,a[10]={1,2,3,4,5,6};
        n = sizeof(a)/sizeof(a[0]);       //数组总大小/一个元素大小 = 元素个数
       
        sort(a,n);
        for(i=0;i<n;i++)
        {
                printf("%d ",a[i]);
        }
        printf("\n");
}

实现二、数组

int sort(int a[])
{
        int i,j,temp;
        for(i=0;i<9;i++)
        {   
                for(j=0;j<9-i;j++)
                {   
                        if(a[j]<a[j+1])
                        {   
                                temp = a[j+1];
                                a[j+1] = a[j];
                                a[j] = temp;
                        }   
                }   
        }   
}
int main()
{
        int i,n;
        int a[10]={1,2,3,42,4,333,44444,33333,3,6};

        sort(a);

        for(i=0;i<10;i++)
        {
                printf("%d ",a[i]);
        }
        printf("\n");
}

实现三、数组 - - - 最大数冒泡到最左边

#include<stdio.h>

int sort(int a[],int n)
{
        int i,j,temp;
        for(i=0;i<n-1;i++)
        {   
                for(j=i+1;j<n;j++)
                {   
                        if(a[i]<a[j])
                        {   
                                temp = a[i];
                                a[i] = a[j];
                                a[j] = temp;
                        }   
                }   
        }   

}

int main()
{
        int i,n,a[10]={1,2,3,4,5,6};
        n = sizeof(a)/sizeof(a[0]);       //数组总大小/一个元素大小 = 元素个数
   
        sort(a,n);
        for(i=0;i<n;i++)
        {
                printf("%d ",a[i]);
        }
        printf("\n");
}

实现四:指针

int bubble_sort(int *p) 
{
        int i,j,temp;
        for(i=0;i<10;i++)
        {   
                for(j=0;j<9-i;j++)
                {   
                        if(*(p+j)<*(p+j+1))
                        {   
                                temp = *(p+j);
                                *(p+j) = *(p+j+1);
                                *(p+j+1) = temp;
                        }   
                }       
        }   
}

int main()
{
        int i,a[10];
        int *p;
        p = a;

        printf("请输入10个数:\n");
        for(i=0;i<10;i++)
        {
                scanf("%d",p+i);
        }

        bubble_sort(p);

        for(i=0;i<10;i++)
        {
                printf("%d ",*(p+i));
        }
        printf("\n");
}

接下来详细介绍下冒泡排序,详细参考:https://blog.csdn.net/qq_39741605/article/details/80821595
假如我们得到一堆数 10 1 35 61 89 36 55 ;
这些数字都放在桌子上,我们需要对其进行从小到大排序 大的在右边小的在左边;
从这些数中可以先拿大的或者先拿小的,我们就以先拿大的为例;
在这里插入图片描述
我们需要 拿第一个和第二个对比 如果第一个比第二个大那么就换位置,如果小就不换,接下来拿第二个和第三个…这样依次下去比到最后 我们把这些数中最大的一个放在了右边, 然后再重复以上的方式下去将第二个大的放在了倒数第二位,依次下去…

在这里插入图片描述

小结
理解了之后进行编码:
1.外层循环控制趟数,内层循环表示第i趟的比较次数
2.为什么第二次循环 条件是 j < arr.Length - 1 - i 我们在上一次循环的时候已经对于 arr.Length - 1 - i之后的位数进行排序过 不用再进行无用的循环

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多种方法实现数组元素从大到小排序;冒泡排序 的相关文章

  • 01背包问题变种:从长度为n的数组里选出m个数使和为固定值sum

    这个问题是我从leetcode上一道问题所想到的 原题 如果是从数组中选出2个数相加使之成为固定的数sum 这当然很简单 把数组中的数字遍历一遍 判断另一个数字是否也在数组中即可 代码如下 vector
  • netty handler的执行顺序(3)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今天解决2个问题 1 handler在pipeline当中究竟是如何存储的 2 在遍历handler的过程中 会根据event的不同 调用不同的handler 这一点是如何
  • python 历险记(五)— python 中的模块

    目录 前言 基础 模块化程序设计 模块化有哪些好处 什么是 python 中的模块 引入模块有几种方式 模块的查找顺序 模块中包含执行语句的情况 用 dir 函数来窥探模块 python 的内置模块有哪些 结语 参考文档 系列文章列表 前言
  • Sort List

    Sort a linked list in O n log n time using constant space complexity 题目要求用 O n log n 的时间复杂度和常数的空间复杂度来进行链表排序 O nlogn 的排序算
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • 一文弄懂循环链表、双向链表、静态链表

    循环链表 双向链表 静态链表 三遍定律 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 1 循环链表 将单链表中终端结点的指针端由空指针改
  • 用 Java 实现的八种常用排序算法

    八种排序算法可以按照如图分类 前置知识 1 算法稳定性 在一个序列中 能保证两个相等的数 经过排序之后 其在序列的前后位置顺序不变 A1 A2 排序前 A1 在 A2 前面 排序后 A1 还在 A2 前面 2 时间复杂度 时间复杂度是用于衡
  • 常用的十种算法--马踏棋盘算法

    1 马踏棋盘算法介绍 马踏棋盘算法也被称为骑士周游问题 将马随机放在国际象棋的 8 8 棋盘 Board 0 7 0 7 的某个方格中 马按走棋规则 马走日字 进行移动 要求每个方格只进入一次 走遍棋盘上全部 64 个方格 2 马踏棋盘算法
  • DNG格式解析

    Author Maddock Date 2015 04 22 转载请注明出处 http www cnblogs com adong7639 p 4446828 html DNG格式基本概念 DNG格式是在TIFF的基础上扩展出来的 要了解D
  • 递归算法中的时间复杂度分析

    对于一种算法的时间复杂度分析还是特别重要的 在一些非递归算法中 我们仅仅看运算次数最多的那一行代码可能执行多少次就可以 实际就是看在循环中变量的变化 但是对于递归算法中该怎么分析呢 下面介绍几种递归函数中的算法时间复杂度分析的方法 0 递推
  • JavaScript系列——数组元素左右移动N位算法实现

    引言 在自己刚刚毕业不久的时候 去了一家公司面试 面试官现场考了我这道题 我记忆深刻 当时没有想到思路 毫无疑问被面试官当成菜鸟了 最近刚好在研究数组的各种算法实现 就想到这道题 可以拿来实现一下 纪念自己逝去的青春 需求 假设有这样一个数
  • 堆栈01--用两个栈实现队列

    堆栈01 用两个栈实现队列 jz05 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 测试用例 队列先进先出 输入 1 2 输出 1 2 解析
  • 浮生六记

    浮生六记 目录 浮生六记卷一 闺房记乐 002 浮生六记卷二 闲情记趣 015 浮生六记卷三 坎坷记愁 022 浮生六记卷四 浪游记快 034 浮生六记 2 浮生六记卷一 闺房记乐 余生乾隆癸未冬十一月二十有二日 正值太平盛世 且在 衣冠之
  • 算法问题实战策略

    算法问题实战策略 基本信息作者 韩 具宗万 译者 崔盛一出版社 人民邮电出版社ISBN 9787115384621上架时间 2015 2 4出版日期 2015 年3月开本 16开页码 738版次 1 1 内容简介 算法问题实战策略 本书收录
  • CRC校验(二)

    CRC校验 二 参考 https blog csdn net liyuanbhu article details 7882789 https www cnblogs com esestt archive 2007 08 09 848856
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • 机器学习算法GBDT的面试要点总结-上篇

    1 简介 gbdt全称梯度提升决策树 在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一 在前几年深度学习还没有大行其道之前 gbdt在各种竞赛是大放异彩 原因大概有几个 一是效果确实挺不错 二是即可以用于分类也可以用于回归 三是可
  • Linux下进程退出的几种形式

    进程退出 Linux 下进程的退出分为正常退出和异常退出两种 1 正常退出 a 在main 函数中执行return b 调用exit 函数 c 调用 exit 函数 2 异常退出 a 调用about函数 b 进程收到某个信号 而该信号使程序
  • 牛客剑指offer刷题其他算法篇

    文章目录 构建乘积数组 题目 思路 代码实现 第一个只出现一次的字符
  • 从源码角度来谈谈 HashMap

    HashMap的知识点可以说在面试中经常被问到 是Java中比较常见的一种数据结构 所以这一篇就通过源码来深入理解下HashMap 1 HashMap的底层是如何实现的 基于JDK8 1 1 HashMap的类结构和成员 HashMap继承

随机推荐

  • ATT&CK红队评估实战靶场(一)

    描述 红队实战系列 主要以真实企业环境为实例搭建一系列靶场 通过练习 视频教程 博客三位一体学习 另外本次实战完全模拟ATT amp CK攻击链路进行搭建 开成完整闭环 后续也会搭建真实APT实战环境 从实战中成长 关于环境可以模拟出各种各
  • JOOQ 代码生成

    Maven Java 项目pom xml 文件
  • 第1143期AI100_机器学习日报(2017-11-04)

    AI100 机器学习日报 2017 11 04 Uber开源深度概率编程语言Pyro 爱可可 爱生活 宾州树库和CTB的Python预处理脚本 hankcs TextBlob Twitter情感分析实战 爱可可 爱生活 Capsule Ne
  • 跨域问题以及在springcloud的gateway中解决跨域问题

    一 什么是跨域问题 跨域问题 当两个页面的域名不一致时 浏览器禁止请求的发起者与服务端发生跨域ajax请求 请求被浏览器拦截的问题 发生跨域问题需要满足的点有 1 两个页面的域名不一致 2 两个页面发生的是ajax请求 这里不允许跨域是浏览
  • echart 设置y轴间隔_分割ECharts的y轴并设置坐标轴间隔

    在 ECharts 图表中的 y 轴的分割段数默认为5 这是由于 yAxis 中的 splitNumber 的决定的 那么我们如果想要在 y 坐标轴上进行更多的分段呢 如何让其刻度间隔变得更加的细致呢 在下文中您会得到答案 yAxis sp
  • javascript cookie session和web storage存储

    众所周知 http是一种无状态存储 现实中的业务需要一定的业务状态 例如某电商网站的用户登录 购物车 如何标示用户和认证一个用户 最早的方案就是cookie存储了 通过引入cookie和session体系机制来维护状态信息 即用户第一次访问
  • 刚刚更新win11,记事本消失怎么处理?你需要注意些什么?

    记录window11的bug hello 我是小索奇 昨天索奇从window10更新到了window11 由于版本不兼容卸载了虚拟机 这是第一个令脑壳大的 算了 还是更新吧 了解了解win11的生态 后期重新装虚拟机 第一个可能问到的问题
  • 递归和非递归

    1 递归就是函数调用函数本身 运行起来就是函数嵌套函数 层层嵌套 所以函数调用 参数堆栈都是不小的开销 但是程序简单 2 非递归就是不断地对参数入栈 出栈 省去了函数层层展开 层层调用的开销 虽然参数出入栈次数多了 但是一般都开辟固定的足够
  • Java实现float转换成int代码_Java中如何将float转换为long或int?(附代码)

    本篇文章给大家带来的内容是关于Java中如何将float转换为long或int 附代码 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 在Java中 有三种方法可以将float转换为long或int 但我们只关注long数据类
  • Apereo CAS反序列化漏洞中数据加解密研究

    Apereo CAS反序列化漏洞中数据加解密研究 0x01 简介 0x02 网上获取资料 0x03 初步运行失败 1 分析 2 Tips 0x04 分析原因 1 自己写解密算法 直接使用cas工程的相关jar包 java文件 调用解密函数
  • java求解水仙花数

    直接在某OJ平台上粘贴他的要求过来 水仙花数的要求也基本都是那样的 本地是能够跑的 只是OJ平台上对空格的处理还有点问题 题目描述 春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数
  • 计算机图形学基础:双向反射分布函数 BRDF

    文章目录 光照 照明 Illumination 预备知识 球面坐标 Spherical Coordinate 立体角 Solid Angle 投影面积 Foreshortened Area 光能 Radiant Energy 光通量 Rad
  • 【第六期】拿不到offer全额退款

    前 言 学院第四期课程在2019年10月结课 第一至第四期具有求职意向的同学中 目前已经有80 的同学拿到了国内外名企的AI算法岗位offer 或者国外名校的AI 硕士 全奖博士录取 offer 在大家的认可下 我们开始了第六期的课程 在本
  • MyBatis 查询数据库

    目录 1 什么是 MyBatis 2 MyBatis 环境搭建 2 1 创建数据库和表 2 2 添加 MyBatis 框架支持 2 3 配置数据库连接和MyBatis 2 4 添加代码 2 4 1 添加实体类 2 4 2 添加 mapper
  • 隐私合规:检测第三方SDK调用的隐私权限

    隐私合规 检测第三方SDK调用的隐私权限 原文地址 隐私合规 检测第三方SDK调用的隐私权限 前言 看了一圈各大网站目前关于隐私合规检测的分享 发现大家几乎都是自己写一套动态代理 Hook或者ASM来实现代码拦截从而检测不合规的代码堆栈 虽
  • 【软考-中级】系统集成项目管理工程师-计算题

    系统集成项目管理工程师 二 计算题 题型一 EMV 预期货币价值 题型二 加权系统 题型三 自制和外贸决策 采购管理 题型四 沟通渠道 沟通管理 题型五 投资回收期 回收率 题型六 进度 网络计算题 学习章节 软考 中级 系统集成项目管理工
  • 解锁tRPC高性能密码:网络方案简介

    导语 本文介绍了部分高性能网络方案 包括RDMA HARP io uring等 从技术原理 落地可行性等方面 简要地做出分析 希望能对此方面感兴趣的开发者提供一些经验和帮助 一 背景 业务中经常会有这样的场景 随着网卡速率的提升 10G 2
  • 算法基础:复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

    前言 我们都知道 数据结构和算法本身解决的是 快 和 省 的问题 即如何让代码运行得更快 如何让代码更生存储空间 所以 执行效率是算法一个非常重要的考量指标 那如何来衡量我们编写的算法代码的执行效率呢 那就是时间 空间复杂度分析 为什么需要
  • ios导航栏透明

    功能需求 根新浪微博个人主页类似 下拉拉伸放大图片下拉刷新 前面文章已解决 向上滑动的时候 导航栏的透明度逐渐增加 最后变成不透明的 当然说起来感觉其实没什么 不就是滑动改变透明度吗 但是做起来完全不是你想象的那样 首先解决透明度的问题 让
  • 多种方法实现数组元素从大到小排序;冒泡排序

    实现数组由大到小排列 实现一 数组 最小数冒泡到最右边 int sort int a int n int i j temp for i 0 i