教你排个序 (直接排序算法)

程序思想:不断的把待排序数据按数值大小“插入”到已经排好适当位置。

源码:

void swap(int &a, int &b)
{
    //方法一:
    int tmp = 0;
    tmp = b;
    b = a;
    a = tmp;
    //方法二:
    //a = a+b;
    //b = a-b;
    //a = a -b;
    //方法三:
    //a ^= b ^= a ^= b;
    //方法四:
    //a = a+b-(b=a);
}

int main(int argc,char *argv[])
{
    int small;
    int input[] {10,12,11,2,5,78,34,64,46,32};
    int size = sizeof(input)/sizeof(input[0]);

    for(int i = 0;i<size;i++){
        small = i;
        for(int j = i+1;j<size;j++)
        {
            if(input[j]<input[i])
            {
                small = j;
                if(small != i)
                {
                    swap(input[small],input[i]);
                }
            }
        }
    }

    for(auto iter = begin(input); iter != end(input);iter++)
    {
        cout<<" "<<*iter;
    }
    cout<<""<<endl;
}

 分析:假设已插入的数据第一个为最小值small,然后从i+1 开始和small进行对比,如果比small还小,则相互交换值。

 

 

您可能还喜欢...

想说点什么吗?

1 评论 在 "教你排个序 (直接排序算法)"

提醒
avatar
trackback

[…] 需要基础点的,大家可以看我的上一篇算法 ,直接插入排序算法。 […]