研究了一下CSDN 私信的排序,我也是醉了

一直感觉CSDN的通知和私信总是看起来怪怪的,主页提示有私信,打开却看不到,有时候向后翻几页又能看到。

今天又遇到这种情况了,于是研究了一下,刚开始还是没找到规律,直到看到“3天前”的消息排在最后一个“3年前”的消息之后,突然就明白了,于是翻到最开始,发现“11个月前”排在第一个,紧跟着是“1年前”的,然后是“2年前”的,再然后是“3年前”,再然后是“3天前”,再然后是“4天前”,直到“26天前”,紧跟之后的是“3个月前”,再之后是“4个月前”。

我是奔放的第一张图片

我是理性的第二张图片

对算法很敏感的我很想了解一下这是怎样的一种排序算法?难不成是按照时间字符串排序的?于是对“11个月前”,“2年前”,“3年前”,“3个月前”,“3天前”和“4天前”几个字符串按照字符串升序排了一下序:

void print(const std::string& e)
{
    std::cout << e << std::endl;
}

int main(int argc, char* argv[])
{
    char *ssts[] = { "11个月前", "3年前", "2年前", "3个月前", "3天前", "4天前" };

    std::vector<std::string> cpths(ssts, ssts + 6);

    std::sort(cpths.begin(), cpths.end(), std::less<std::string>());
    std::for_each(cpths.begin(), cpths.end(), print);  

    return 0;
}
我是性感的源代码

排序后的结果是:

“11个月前”

“2年前”

“3个月前”

“3年前”

“3天前”

“4天前”

居然对上了,你怎么看?

时间: 2024-10-20 05:23:56

研究了一下CSDN 私信的排序,我也是醉了的相关文章

【学生研究课题】CSDN博客数据获取、分析、分享

题记 这次<对象程序设计>课程设计,一共给定了8个选题(下载WORD版,PDF版),以及自由选题的机会.从大家初步选题结果来看(图1),绝大部分同学选择了"图形用户界面的计算器",较少同学选择了3-8题中的一个.一方面,可以看出大家目前的动手能力还有待提高,教师的教学水平还不能给予学生较多的帮助:另一方面,学生缺乏"主动选择.对自己负责"的能力,和从小学到大学一直是被动学习状态有关.李雅卿老师的<乖孩子的伤最重>(豆瓣,京东)中一篇文章&qu

算法研究之合并两个已排序的数组java版

package com.zken.test; /** * @author iamzken * 2015-8-28 * 合并两个有序数组 * */ public class Sorter2 { public static void merge2SortedArray(int[] a , int[] b , int[] c){ //a数组的当前索引 int i = 0; //b数组的当前索引 int j = 0; //c数组的当前索引 int k = 0; //循环,只要a和b都没有遍历完就一直循环

希尔排序(插入排序)-八大排序三大查找汇总(5)

基本思想 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序. 稳定性 由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的. 时间复杂度 希尔排序的时间复杂度取决于步长的选择. 平均情况下,

MongoDB自然排序

MongoDB自然排序 名词解释 natural order    该排序下数据库参照文档在磁盘上的存储顺序.这是默认的排序顺序. ObjectId    一个特定的12字节BSON类型,用于保证集合中的唯一性.ObjectId基于timestamp.machine ID.process ID和 a process-local incremental counter产生.MongoDB使用ObjectId值作为_id键的默认值. _id 和 ObjectId 当集合创建的时候,MongoDB在_

java 各种排序算法

各种排序算法的分析及java实现 排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下. 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插入排序:直接插入排序.二分法插入排序.希尔排序. (2).

(转) 白话经典算法系列之三 希尔排序的实现(附源代码实现)

链接:http://blog.csdn.net/morewindows/article/details/6668714 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序.因为直接插入排序在元素基本有序的情况下(接近最好情况),效率

排序算法分析【二】:希尔排序(附Python&amp;C++代码)

希尔排序 也称递减增量排序算法,是插入排序的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 1.插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率: 2.插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位: 算法原理 基础是插入排序,我们先看图,图片动态展示: 这个图太快了还是不知道他在干嘛,在给一张图(图片均来自互联网): 步长选择 希尔排序中步长的选择是重中之重![来自于维基百科] 1.最终步长必

各种排序算法的分析及java实现

各种排序算法的分析及java实现 排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下. 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插入排序:直接插入排序.二分法插入排序.希尔排序. (2).

数据结构杂谈(一)浅谈基本排序算法

0.基本概念 记录:待排序的项目 关键词:决定排序结果 稳定性:相同关键词的记录保持原来的相对次序 1.1插入排序(Insertion Sort) 算法思想 一种简单直观的排序算法,工作原理是通过构建有序序列:对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法描述 具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于