C++把数字排序
描述
如题,详细如下:
输入不超过1024个数字,以特殊数字结尾,如(-999),把数字从小到大排序。
思路
目前,我们有两种思路可以写:
1是 在输入的时候,排序数组。
2是 先输入到数组,再排序。
其中,笔者认为第一种更简单,故此,本章采取第一种思路。
代码
#include <iostream>
using namespace std;//命名空间
int main()
{
int num[1024] = {};//总数字数组
int temp;//输入变量
int count=0;//输入到数组位置
int pos;//比数小的位置
while (1) {
pos = -999;//不存在的位置
cin >> temp;//输入
if (temp == -999) break;//如果输入-999就结束
if (count != 0) {//如果当前不是第一位
for (int i = count; i >= 0; i--) {
if (temp <= num[i]) {//如果有比这个数小的
pos = i;
}
}
if (pos == -999) {//当全部数组里面没有比这个数小的
num[count] = temp;//移到最后一位
}
else {
for (int x = count; x >= pos; x--) {//全部后移
num[x + 1] = num[x];
}
num[pos] = temp;//存储到后移的空位
}
}
else {
num[count] = temp;//第一位
}
count++;//位置+1
}
for (int i = 0; i < count; i++) {
cout << num[i]<<" ";//依次输出
}
return 0;
}
不过这套算法的时间复杂为O(n^2) 最简单的quick sort为O(n*logn) 所以从最简上看,还是应该用quick sort
解法2
#include <iostream>
using namespace std;
struct Num{
int num = 0;
Num* next = NULL;
Num* last = NULL;
bool S = false;
bool E = false;
}n[1024];
int main() {
int i = 2;
Num* END = &n[1];
Num* START = &n[0];
START->S = true;
START->next = &n[2];
END->E = true;
END->last = &n[2];
n[2].last = START;
n[2].next = END;
int temp;
while (true) {
temp = 0;
cin >> temp;
if (temp == -999) break;
n[i].num = temp;
if(i!=2) {
Num* s = START->next;
bool flag = false;
while (1) {
if (s->E) {
break;
}
else if (s->num <= temp&&s->next->num>=temp) {
Num* b = s->next;
Num* l = s->next->last;
b->last = &n[i];
n[i].next = b;
l->next = &n[i];
n[i].last = l;
flag = true;
break;
}
s = s->next;
}
if (!flag) {
if (temp < START->next->num) {
n[i].next = START->next;
n[i].last = START;
START->next->last = &n[i];
START->next = &n[i];
}
if (temp >= END->last->num) {
END->last->next = &n[i];
END->last = &n[i];
n[i].last = END->last;
n[i].next = END;
}
}
}
i++;
}
Num* out = START;
for (int a = 0; a < i; a++) {
out = out->next;
if (out->E)break;
cout << out->num << " ";
}
return 0;
}
End
C++把数字排序的更多相关文章
- 基于Hadoop 2.6.0运行数字排序的计算
上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...
- CCF系列之数字排序(201503-2)
问题描述试题编号: 201503-2试题名称: 数字排序时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
- SQL SERVER 字符串按数字排序
需求是这样的: 数据库表里面有一个字段类型是nvachar,存的值是数字和字符混合的,要实现先按数字排序,再按字母倒序. 思路: 考虑这个字段的值是否是有规律可循的,把要按数字排序的部分转换为数字,再 ...
- CCF CSP 201503-2 数字排序 (map+自定义排序)
题目链接:http://118.190.20.162/view.page?gpid=T26 返回试题列表 问题描述 试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: ...
- JavaScript按纯数字排序
直接上代码: var arr=[ {name:"张散步",age:"23",sports:"篮球",number:"23112 ...
- php冒泡排序实现方法,传入几个数字排序后 输出实战例子
php冒泡排序实现方法,传入几个数字排序后 输出实战例子 算法和数据结构是一个编程工作人员的内功.四种入门级排序算法: 冒泡排序.选择排序.插入排序.快速排序. 一.冒泡排序 原理:对一组数据,比较相 ...
- CCF CSP 201503-2 数字排序
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-2 数字排序 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到 ...
- mysql将字符串字段转为数字排序或比大小
SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...
- sort()函数到底是怎样进行数字排序的
很多人会用sort(),并不见得知道它具体是怎样给数字排序的.其实不知道也行,会用就可以,感兴趣的可以来看看. var numberArray = [2,4,1,3]; numberArray.sor ...
- CCF201503-2 数字排序 java(100分)
试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
随机推荐
- 影评网站Alpha版本-测试与发布
影评网站Alpha版本-测试与发布 项目发布地址: http://120.78.161.21:8080/zhiying/ (建议使用Chrome或火狐浏览器打开,其他浏览器可能加载失败 一.Alpha ...
- CSP-S2020复赛游记
[本文经过删改] 前一个月 没做什么 NOIP 的题,感觉这些题对我这个做黄题封顶的人不是很友好. 前一天 考了场模拟赛,全场最低分 89,感觉信心满满. 退役那天 到了 XJ,发现没人可以面基,想着 ...
- Java并发编程的艺术(七)——线程间的通信
为什么需要线程间通信 让线程之间合作,提高运行效率. volatile和synchronized关键字 实现原理 这两个方式都是采用共享内存的方式进行通信,通过同步机制保证数据可见性和排他性. 特点 ...
- mongodb 学习之——mongod --help 中文解释
中文解释如下: -------------------------------------------------------------------------------- --quiet # 安 ...
- C++异常之五 异常和继承
异常和继承 异常也是类,我们可以创建自己的异常类,在异常中可以使用(虚函数,派生,引用传递和数据成员等), 下面用一个自制的数组容器Vector,在对Vector初始化时来对Vector的元素个数进行 ...
- K8s 终将废弃 docker,TKE 早已支持 containerd
近日 K8s 官方称最早将在 1.23版本弃用 docker 作为容器运行时,并在博客中强调可以使用如 containerd 等 CRI 运行时来代替 docker.本文会做详细解读,并介绍 dock ...
- EasyExcel导入
记录摸鱼的一天 技术栈:spring boot2.x+mybatis plus+easyExcel 2.2.6 生成简单的实体类等等等等 导入easyExcel的依赖 实体类 编写服务层 import ...
- SSO的通用标准OpenID Connect
目录 简介 OpenID Connect是什么 ID Token 请求ID Token ID Token可以做什么 Open Connect认证码授权的例子 User Info 简介 OpenID C ...
- 【Harbor学习笔记】-教你快速搭建Docker私有仓库
目录 架构图 Harbor依赖的外部组件 Harbor自有组件 核心组件 安装 1. 下载离线安装包 2. 配置 harbor.cfg (harbor.yml) 3. 启动 Harbor 安装配置问题 ...
- 微信小程序 rich-text 修改照片
<view> <rich-text nodes="{{delcon}}" /> </view> data: { delcon:'' }, var ...