news 2026/1/26 9:31:46

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
笨人小白的温故知新——排序(2)

这是一个一题多解的博客!下面是一道很简单的题:

1177:奇数单增序列

题目描述】

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

【输入】

第1行为 N;

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

【输出】

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

【输入样例】

10 1 3 2 6 5 4 9 8 7 10

【输出样例】

1,3,5,7,9

方法一:插入法

void insertSort(int a[], int n) { for(int i = 1 ; i < n ; i ++){ if(a[i] < a[i-1]){ int j = i-1 ; int x = a[i] ; while(j >= 0 && a[j] > x){ a[j+1] = a[j] ; j -- ; } a[j+1] = x ; } } }

这就是插入法的代码模板。它的原理很简单,就是以一个乱序的数组中的第一个数为基石,通过后面的数与前面的数字比较,将数字逐一为它们找到自己的位置。

下面是插入法写出来的AC代码:

#include <iostream> #include <stdio.h> using namespace std ; void insertSort(int a[], int n) { for(int i = 1 ; i < n ; i ++){ if(a[i] < a[i-1]){ int j = i-1 ; int x = a[i] ; while(j >= 0 && a[j] > x){ a[j+1] = a[j] ; j -- ; } a[j+1] = x ; } } } int main(){ int n , a[505] , k = 0 ; cin >> n ; for(int i = 0 ; i < n ; i ++) scanf("%d" , &a[i]) ; insertSort(a , n) ; int first = 1 ; for(int i = 0 ; i < n ; i ++){ if(a[i] % 2 == 1){ if(first == 1){ first = 0 ; printf("%d", a[i]) ; continue ; } else if(first == 0) printf(",%d" , a[i]) ; } } return 0 ; }

方法二:归并排序

#include <iostream> #include <algorithm> using namespace std ; const int N = 1e6+10 ; int tmp[N] ; void mergesort(int q[] , int l , int r){ if(l >= r) return ; int mid = l + r >> 1 ; mergesort(q , l , mid) ; mergesort(q , mid+1 , r) ; int i = l , j = mid+1 , k = 0 ; while(i <= mid && j <= r){ if(q[i] <= q[j]) tmp[k++] = q[i++] ; else tmp[k++] = q[j++] ; } while(i <= mid) tmp[k++] = q[i ++] ; while(j <= r) tmp[k++] = q[j ++] ; for(i = l , j = 0 ; i <= r ; i ++ , j ++) q[i] = tmp [j] ; } int main(){ int n , len , k = 0 ; cin >> n ; len = n ; int* a = new int[n] ; while(n --) scanf("%d" , &a[k++]) ; mergesort(a , 0 , len-1) ; 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 ; }

这里,我用了动态数组来优化!

方法三:快速排序

do-while循环执行后:

  1. 左指针i:最终停在第一个不小于基准值x的元素上(即q[i] ≥ x,之前跳过的所有元素都是q[?] < x);
  2. 右指针j:最终停在第一个不大于基准值x的元素上(即q[j] ≤ x,之前跳过的所有元素都是q[?] > x);

简单说:i指向了左区间里「不该出现的大元素」,j指向了右区间里「不该出现的小元素」。

以上是我的困惑点,这是豆包为我作的解答。以下是我的AC代码:

#include <iostream> #include <algorithm> using namespace std ; const int N = 505 ; void quick_sort(int q[] , int l , int r){ if(l >= r) return ; int i = l-1 , j = r+1 , x = q[l+r>>1] ; while(i < j){ do i ++ ; while(q[i] < x) ; do j -- ; while(q[j] > x) ; if(i < j) swap(q[i] , q[j]) ; } quick_sort(q , l , j) , quick_sort(q , j+1 , r) ; } int main(){ int n , len , k = 0 , a[N]; cin >> n ; len = n ; while(n --) scanf("%d" , &a[k++]) ; quick_sort(a , 0 , len-1) ; 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 ; }

明天我将用其他几种方法来做一下这道题!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/24 12:07:40

学生党必备!2个真正免费降AI率的工具,亲测知网AIGC检测通过

2个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2025/12/20 22:17:47

Function Calling

文章目录Function Calling在大模型中的作用Function Calling在大模型中的作用 扩展模型能力 大模型本身无法直接操作外部系统&#xff08;如数据库、计算工具&#xff09;&#xff0c;但通过调用预设函数&#xff0c;可以完成&#xff1a; 实时数据获取&#xff08;天气、股价…

作者头像 李华
网站建设 2026/1/20 22:47:21

mysql | 环境变量问题及其配置方法详解

前言 当安装 mysql 环境时&#xff0c;没有选择配置环境变量情况下&#xff1a; 直接打开命令提示符&#xff08;cmd&#xff09;窗口运行 mysql 命令&#xff0c;会出现以下报错&#xff1a; ‘mysql’不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。如下…

作者头像 李华
网站建设 2026/1/25 22:09:12

能省一点是一点!这2个免费降AI率的工具,降AI效果也很好!

3个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/1/25 4:49:23

基于java的SpringBoot/SSM+Vue+uniapp的心理咨询预约管理的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录 前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus 系统测试系统测试目的系统功能测试系统测试结论 为什么选择我代码参考数据库参考源码获取 前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高…

作者头像 李华