#define SUCCESSE 1
#define FAIL 0

冒泡排序(Bubble Sort)

1.两数不断比较交换值直到符合条件

2.缺点: 交换次数有点多

int BubbleSort(int* ary, int size)
{
    int i, j, tmp, isOrder, range, tmpRange = 0;

    if (NULL == ary || size <= 0)
        return FAIL;

    range = size - 1;
    for (i = 0; i < size - 1; i++)
    {    
        isOrder = 1;
        for (j = 0; j < range; j++)
        {
            if (ary[j] > ary[j + 1])
            {
                tmp = ary[j];
                ary[j] = ary[j + 1];
                ary[j + 1] = tmp;
                tmpRange = j;//缩小下一个数的内循环
                isOrder = 0;
            }
        }

        range = tmpRange;
        if (isOrder)//数组当前已经有序
            return SUCCESSE;
    }
    return SUCCESSE;
}

选择排序(Selection Sort)

1.从数组里面选出最大最小值,不断从外往内有序排序

int SelectionSort(int* ary, int size)
{
    int i, min = 0, max = 0, left = 0, right = 0, tmp = 0;

    if (NULL == ary || size <= 0)
        return FAIL;

    right = size - 1;

    for (left = 0; left <= right; left++, right--)//两边同时查找,更快缩小范围
    {
        min = left;
        max = right;

        for (i = left; i <= right; i++)
        {
            if (ary[i] < ary[min])
            {
                min = i;
            }
            else if (ary[i] > ary[max])
            {
                max = i;
            }
        }

        if (min != left)
        {
            tmp = ary[left];
            ary[left] = ary[min];
            ary[min] = tmp;

            if (max == left)//如果左边的值刚好是最大值,应保持原有max对应的值
            {
                max = min;
            }
        }

        if (max != right)
        {
            tmp = ary[right];
            ary[right] = ary[max];
            ary[max] = tmp;
        }
    }
    return SUCCESSE;
}

程序设计模式

工厂模式

就把多个高度相似函数合并成一个函数, 更方便阅读,整合,扩展子模块。

你不用管内部是怎么实现的,尽管传参就是。在很多语言里面(又被称为单例模式),

创建对象只允许创建一个,有比较内存地址,比较内存结构,内存特征(内存地址和值形成的乘积,

有概率不同内存也会相等的,除非它们的内存块地址是固定的)的。

回过头来看这些设计模式,已经脱离了代码的本质,要想让人了解设计模式,

应该把编译器的本质告诉人们,内存没有那么复杂。写代码要考虑的是需求,改需求。


MVC模式

工作写了两年代码,更多是M-VC模式,数据是分离的,VC并没有完全分离。

每一种模式都对应着一种编程语言,这真的很让人讨厌。

MVC的升级版出了MVP,在MVC模式下,一个网页表格可能对应一个或者多个数据库表,

如果你在数据库新增一个字段,代码逻辑和网页肯定也要加一个,那能否减少一个呢?

把网页的减去,但是相对你要增加逻辑层的代码,可是需求上又想做到智能显示,

为了做到这样,把逻辑层智能化一点,智能识别字段,构造表格,好爽啊。

我理解为MVVM,逻辑和数据是互动的。

当用户不在局限于看到你指定给用户的东西,用户要自己指定想看的东西。

想直接分个数据库的普通账号给你是,但是最终还是要靠程序员,网页,逻辑都改动很多。

我理解为MVP, 逻辑和数据是互动的,视图和逻辑是互动的。


人排序

我所认知的世界,人是分不同实际价值等级进行排序的。历史上皇帝是真龙天子,妃子是凤,

人民为皇帝效忠管理人民。恒古不变争夺的有,交配,地域,统治。

排序的目的是为了对数据进行更好的分析。

假设有一天仿真机机器人真的出现了,它能明白你喜欢什么,讨厌什么,学会怎么讨好你。

并且只要电,已经形成了机器产业链,可以取代无数没有技术的人。

用机器抹去我们不想看到的,仿造我们想要的东西,如果机器可以取代我,那么我的意义在哪里呢?


历史排序-下跪

《唐伯虎点秋香》皇帝直接任命官员,官员们见到皇帝要下跪。平民见到官员要下跪。

平民的儿子要向平民的爷爷辈下跪(到现在过年,结婚都要跪,我讨厌这种行为)。

所以我从下跪行为推断出:皇帝>官员>平民>平民的儿子。


我们都知道男儿膝下有黄金,我却不知道这句话的缘由。

出自桑园会。讲的是一个年轻男子秋胡在楚国当了官,但是已经父母指婚,

秋胡回来在路边看见一个女子,谈话知道是罗氏(未婚妻)后,罗氏不认识秋胡。

秋胡心里就想看看罗氏的贞操怎么样,秋胡故意说秋胡是个王八蛋在外面早就有了老婆了,

我出马蹄金买你一夜。但是罗氏不从,跑到秋胡家,后来秋胡回家,罗氏这才知道这是秋胡,

罗氏感到自己受到了侮辱,死也不嫁给这样的人。秋胡老妈要秋胡下跪给罗氏道歉,

秋胡就说男儿膝下有黄金但最终还是下跪给罗氏道歉和好

老婆比礼节更重要
老婆比礼节更重要

从桑园会我推断出下跪原因:人下跪是因愧疚


臣子给皇帝下跪,是从什么时候开始的?|斯文卿相

从网络上解答,历史人下跪是因为椅子太矮形成的礼仪,后来是皇帝这么要求的


历史排序-衣服

1.穿烂麻布,草的是平民,老百姓,乞丐

2.穿绣花的,穿粉色的衣服是女性,小妾,夫人

3.穿黄色的衣服是皇族

穿紫色衣服就是骚
穿紫色衣服就是骚

2020排序-外貌

晒的乌漆墨黑,衣着不整,没有发型,浑身脏兮兮的是民工
晒的乌漆墨黑,衣着不整,没有发型,浑身脏兮兮的是民工
皮肤会反光,雪白,发型独特很有可能是明星
皮肤会反光,雪白,发型独特很有可能是明星

穿黑西装打领带的是大领导
穿黑西装打领带的是大领导


2020排序-汽车

坐在三轮后面的通常是老奶奶,父母辈的人
坐在三轮后面的通常是老奶奶,父母辈的人
成功的男人要美女配豪车
成功的男人要美女配豪车