尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

笨人小白的温故知新——排序(3)

笨人小白的温故知新——排序(3)
📅 发布时间:2026/6/22 3:15:36

我来啦!今天依旧是1177:奇数单增序列的一题多解。

(不厌其烦地附上题目)

【题目描述】

给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。

【输入】

第1行为 N;

第2行为 N 个正整数,其间用空格间隔。

【输出】

增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。

【输入样例】

10 1 3 2 6 5 4 9 8 7 10

【输出样例】

1,3,5,7,9

方法四:冒泡排序

我在大佬源代码的基础上,将q[j]与q[j+1]的复制与赋值换成了swap()函数!嘻嘻,我会a little bit举一反三了!

这个flag是用来判断当前数组是否已经有序的,其实没有flag也不影响理解哒!

#include <iostream> #include <algorithm> using namespace std ; void bubblesort(int q[] , int n){ for(int i = 0 ; i < n - 1 ; i ++){ bool flag = true ; //用一个flag来判断当前数组是否已经有序,有序则推退出循环 for(int j = 0 ; j < n - 1 ; j ++){ if(q[j] > q[j+1]){ swap(q[j] , q[j+1]) ; flag = false ; } } if(flag) break ; } } int main(){ int n , len , k = 0 ; cin >> n ; len = n ; int* a = new int[n] ; while(n --) scanf("%d" , &a[k++]) ; bubblesort(a , len) ; int first = 1 ; for(int i = 0 ; i < len ; i ++){ if(a[i] % 2 == 1){ if(first == 1){ first = 0 ; printf("%d", a[i]) ; continue ; } else printf(",%d" , a[i]) ; } } return 0 ; }

方法五:希尔排序

看了希尔排序的动画后,就觉得这玩意儿 和插入排序怎么那么像,看到它的模板代码后发现,这俩真的超级像!

希尔排序比插入排序多的一个地方是增量gap。希尔排序每次都选择gap/2作为它的步长(初始的gap为n/2),根据这个步长分组进行排序,使得每次排序的工作量都比较小。

#include <iostream> #include <algorithm> using namespace std ; void shellsort(int q[] , int n){ for(int gap = n/2 ; gap >= 1 ; gap/=2){ for(int i = gap ; i < n ; i += gap){ int temp = q[i] ; int pre = i - gap ; while(pre >= 0 && q[pre] > temp){ q[pre+gap] = q[pre]; pre -= gap ; } q[pre + gap] = temp ; } } } int main(){ int n , len , k = 0 ; cin >> n ; len = n ; int* a = new int[n] ; while(n --) scanf("%d" , &a[k++]) ; shellsort(a , len) ; int first = 1 ; for(int i = 0 ; i < len ; i ++){ if(a[i] % 2 == 1){ if(first == 1){ first = 0 ; printf("%d", a[i]) ; continue ; } else printf(",%d" , a[i]) ; } } return 0 ; }

方法五:选择排序

#include <iostream> #include <algorithm> using namespace std ; void selectionsort(int q[] , int n){ for(int i = 0 ; i < n ; i ++){ int min = i ; for(int j = i+1 ; j < n ; j ++){ if(q[j] < q[min]) min = j ; } int temp = q[min] ; q[min] = q[i] ; q[i] = temp ; } } int main(){ int n , len , k = 0 ; cin >> n ; len = n ; int* a = new int[n] ; while(n --) scanf("%d" , &a[k++]) ; selectionsort(a , len) ; int first = 1 ; for(int i = 0 ; i < len ; i ++){ if(a[i] % 2 == 1){ if(first == 1){ first = 0 ; printf("%d", a[i]) ; continue ; } else printf(",%d" , a[i]) ; } } return 0 ; }

相关新闻

  • Day8 判断集合成员 -卡码网C++基础课
  • 《C语言程序设计》琐碎知识点总结笔记
  • 基于Java+SSM+SSM线上管理系统(源码+LW+调试文档+讲解等)/线上管理平台/在线管理系统/线上管理软件/网络管理系统/线上办公系统

最新新闻

  • 2026年绍兴本地GEO工具推荐:企业选工具前先看这8个核心能力 - 科技快讯
  • 高阶时空建模:从图神经网络到单纯复形与时空随机游走
  • 一劳永逸!Visual C++运行库完整安装指南:告别DLL缺失错误
  • 2026年7月全国汽车窗膜车衣服务机构实力盘点:DuPont™杜邦™正规可信、专业技术过硬、售后完善 - 十大排行榜推荐
  • 洛雪音乐助手:三步打造你的跨平台智能音乐中心
  • OpenClaw技能编排引擎:YAML驱动的AI工作流集成方案

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号