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个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
随机推荐
- Python3安装且环境配置(三)
1.在Window 平台安装 Python3 以下为在 Window 平台上安装 Python3 的简单步骤: 打开WEB浏览器访问http://www.python.org/download/ 在下 ...
- js onreadystatechange 和 onload的区别
IE的script 元素只支持onreadystatechange事件,不支持onload事件. FF的script 元素不支持onreadystatechange事件,只支持onload事件. 如果 ...
- OkHttpClient调优案例
OkHttpClient调优案例 作者:Grey 原文地址: 语雀 博客园 Github 实际案例 系统运行一段时间后,线程数量飙升,CPU持续居高不下 排查工具 https://fastthread ...
- 面试 16-01.MVVM
16-01.MVVM #前言 MVVM的常见问题: 如何理解MVVM 如何实现MVVM 是否解读过Vue的源码 题目: 说一下使用 jQuery 和使用框架的区别 说一下对 MVVM 的理解 vue ...
- 网站开发学习Python实现-Django项目部署-同步之前写的博客(6.2.2)
@ 目录 1.说明 2.思路 3.代码 关于作者 1.说明 之前写的博客都在csdn和博客园中 要将博客同步到自己的博客网站中 因为都是使用markdown格式书写的,所以直接爬取上传就完事 2.思路 ...
- python爬虫之解析链接
解析链接 1. urlparse() & urlunparse() urlparse() 是对url链接识别和分段的,API用法如下: urllib.parse.urlparse(urlstr ...
- vs2012新特性
VS2012的六大技术特点: 1.VS2012和VS2010相比,最大的新特性莫过于对Windows 8Metro开发的支持.Metro天生为云端而生,简洁.数字化.内容优于形式.强调交互的设计已经成 ...
- 深度学习论文翻译解析(十六):Squeeze-and-Excitation Networks
论文标题:Squeeze-and-Excitation Networks 论文作者:Jie Hu Li Shen Gang Sun 论文地址:https://openaccess.thecvf.co ...
- Ubuntu系统的ifconfig命令不能执行
新安装的Ubuntu想要用WinSCP传文件时发现,ifconfig命令用不了 ping www.baidu.com 获得回应,应该是ifconfig未安装 解决这个问题,首先如图(时间较长,获取:[ ...
- CVE-2017-12149 JBOOS反序列化漏洞复现
一.漏洞描述 2017年8月30日,厂商Redhat发布了一个JBOSSAS 5.x 的反序列化远程代码执行漏洞通告.该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccess ...