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个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
随机推荐
- git 远端版本回退
情景:本地更改推送远端后,想要回退到自己推送之前的某个版本. 比如想回退的分支为 test 分支. 风险:远端回退到某一版本后,之后的所有推送都没了(对应的日志记录也没了).如果是团队开发,不仅自己推 ...
- Java8新特性探索之新日期时间库
一.为什么引入新的日期时间库 Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的. 关 ...
- JavaScript中遍历的几种方法
1.while循环 while后面跟循环条件和执行语句,只要满足条件,就会一直执行里面的执行 var i = 0 while(){ console.log(i) i++ } 2.do...while循 ...
- Mysql8.0新特性【详细版本】
1. 账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC'; ...
- 使用脚手架搭建vue项目
全局安装环境 安装webpack npm install webpack -g 安装vue脚手架 npm install -g @vue/cli-init 初始化vue项目 vue init webp ...
- 初始化CentOS7
安装CentOS7 配置网络 # 修改网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROX ...
- Kubernetes【K8S】(五):Service
Service概念 Kubernetes Service定义了一个Pod的逻辑分组,一种可以访问它们的策略.这组Pod能被Service访问到,通常是通过label Selector. Service ...
- 手写开源ORM框架介绍
手写开源ORM框架介绍 简介 前段时间利用空闲时间,参照mybatis的基本思路手写了一个ORM框架.一直没有时间去补充相应的文档,现在正好抽时间去整理下.通过思路历程和代码注释,一方面重温下知识,另 ...
- [日常摸鱼]Luogu2521[HAOI2011]防线修建-set维护凸包
https://www.luogu.org/problemnew/show/2521 题意:维护一个上凸包:删点,查询周长 很容易想到把问题转换为离线:先读入全部操作,记录下最后剩下的点,倒着加点来维 ...
- python2与python3共存后,如何使用
借用py的一个参数 py -2 与py -3调用不同是的python版本 所以运行的时候只要 py -2 文件名可以用python2来运行脚本 py -3 文件名就是用python3 来运行脚本 参考 ...