经典排序之插入排序

116 篇文章 2 订阅
19 篇文章 0 订阅

插入排序的思路可以这样形象地理解:整理手中的扑克牌,每抓到一张牌,比较它与之前手中的牌的大小,插在合理的位置。

对于少量元素的排序,它是一个有效的算法。它的时间复杂度为 O(n^2)

#include <iostream>
using namespace std;

int main(){     //插入排序
    int a[] = {5,2,4,6,1,3};
    int i,j,key;
    int length = sizeof(a)/sizeof(int);  //获取数组长度
    for(j=1;j<length;j++){
        key = a[j];
        i = j-1;
        while(i>=0 && key <= a[i]){
            a[i+1] = a[i];
            i--;
        }
        a[i+1] = key;
    }
    for(i=0;i<length;i++)
        cout<<a[i]<<" ";
    return 0;
}

今天在《算法导论》中,看到这样一段话,很受启发。是否具有算法知识与技术的坚实基础是区分真正熟练的程序员与初学者的一个特征。使用现代计算技术,如果你对算法懂得不多,你也可以完成一些任务,但是,如果有一个好的算法背景,那么你可以做的事情就多得多。

我希望有越来越多的人在本科阶段注重算法和数据结构方面的知识,因为这是基础中的基础,而不是看似很有前途的web开发、安卓IOS开发等等。要知道,基础不牢,地动山摇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值