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个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
随机推荐
- SQL数据库优化的六种方法
SQL命令因为语法简单.操作高效受到了很多用户的欢迎.但是,SQL命令的效率受到不同的数据库功能的限制,特别是在计算时间方面,再加上语言的高效率也不意味着优化会更容易,所以每个数据库都需要依据实际情况 ...
- Day3 Scrum 冲刺博客
·线上会议: 昨天已完成的工作与今天计划完成的工作及工作中遇到的困难: 成员姓名 昨天完成工作 今天计划完成的工作 工作中遇到的困难 纪昂学 创建一个Cell类,用来表示一个小方块 就创建一个Tetr ...
- elasticsearch的基本了解
以下内容参考官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.2/elasticsearch-intro.html 使用的学 ...
- Linux 上安装 mysql
1.通过 yum 命令安装 mysql 可以先通过 yum list |grep mysql 方式查看有哪些版本的 mysql 2.安装 mysql yum install mysql-server ...
- [从源码学设计]蚂蚁金服SOFARegistry之推拉模型
[从源码学设计]蚂蚁金服SOFARegistry之推拉模型 目录 [从源码学设计]蚂蚁金服SOFARegistry之推拉模型 0x00 摘要 0x01 相关概念 1.1 推模型和拉模型 1.1.1 推 ...
- docker 使用ubuntu 系统
1.安装Ubuntu系统命令:docker pull ubuntu这是一个极度精简的系统,连最基本的wget命令都没有:所以先要apt-get update升级系统和安装apt-get install ...
- jenkins+ant+jmeter实现自动化集成(详解)
jenkins+ant+jmeter实现自动化集成 for window 一.jmeter 1.jmeter安装 二.ant 1.ant安装 三.ant运行 jmeter脚本 1.配置 四.jenki ...
- Git - 简单的使用与Github
Github: Following the instructions to create repo. Git on Linux(centos): download the latest GIT and ...
- 工具-Redis-介绍(99.6.1)
@ 目录 1.nosql介绍 2.Redis特性 3.redis应用场景 关于作者 1.nosql介绍 not only sql,不支持SQL语法.存储结构跟传统关系型数据库中的那种关系表完全不同,n ...
- centos8中的MySQL卸载和安装
centos8中的MySQL卸载和安装 前言 前几天在自己的服务器上安装了一个NDB集群[而且还没有成功] 放弃治疗后用一台没有mysql的服务器实现了单机版本的集群. 本来以为这事到这就结束了,结果 ...