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个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
随机推荐
- python菜鸟教程学习10:数据结构
列表方法 list.append(x):把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]. list.extend(L):通过添加指定列表的所有元素来扩充列表,相当于 a[len( ...
- 【ZJOI2019】线段树(线段树 & dp)
Link UOJ LOJ Luogu Solution 很玄妙的一道题,考察了对线段树较本质的理解 然而我并不会这个所谓最可做的题 首先,虽然题目很复杂,好像每个点的标记变化都很玄学,但是我们可以深入 ...
- 题解-CF1396C Monster Invaders
题面 CF1396C Monster Invaders 有 \(n\) 层关卡,每层有 \(a_i\) 个小怪(\(1\) 血)和 \(1\) 个老怪(\(2\) 血).有三种武器:\(1\) 武器每 ...
- KVM虚拟机网络
某一天,我的QEMU/KVM虚拟机在打开的时候,出现了以下错误: 查看default配置状态(命令是sudo virsh net-list -all,注意sudo,管理员用户登录的当我没说): 上图是 ...
- windows远程msra windows使用技巧
qq远程太慢,mstsc?又不想把电脑密码告诉好友,怎么办呢?在这里推荐一个方法: 点击开始运行输入msra,确定,邀请信任的人帮助你您,将该邀请另存为文件,然后这个窗口不要关,把密码复制粘贴给好友, ...
- Hadoop核心-HDFS
上一篇我们熟悉了hadoop,本篇讲解一下hadoop第一个核心HDFS. 一.概述 HDFS是一个分布式文件存储系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上, ...
- 网络编程-python实现-TCP实现文件下载(1.1.4)
@ 目录 代码实现 代码实现 客户端 from socket import * def main(): # 创建socket tcp_client_socket = socket(AF_INET, S ...
- Github标星26k+!一个神奇的软件!1分钟即可打造了一个科幻风格的终端
Github掘金计划项目分类汇总(原创不易,若有帮助,欢迎分享/点赞): 编程基础 :精选编程基础如学习路线.编程语言相关的开源项目. 计算机基础:精选计算机基础(操作系统.计算机网络.算法.数据结构 ...
- OC 大数组分割成由小数组重新组合的新数组
NSLog(@"++++%@",[self seprateBigArrBySize:3 BigArr:@[@"1",@"2",@" ...
- C# 队列Queue,ConcurrentQueue,BlockingCollection 并发控制lock,Monitor,信号量Semaphore
什么是队列? 队列Queues,是一种遵循先进先出的原则的集合,在.netCore中微软给我们提供了很多个类,就目前本人所知的有三种,分别是标题提到的:Queue.ConcurrentQueue.Bl ...