经典排序之插入排序
2016-04-25 22:15
169 查看
插入排序的思路可以这样形象地理解:整理手中的扑克牌,每抓到一张牌,比较它与之前手中的牌的大小,插在合理的位置。
对于少量元素的排序,它是一个有效的算法。它的时间复杂度为 O(n^2)
今天在《算法导论》中,看到这样一段话,很受启发。是否具有算法知识与技术的坚实基础是区分真正熟练的程序员与初学者的一个特征。使用现代计算技术,如果你对算法懂得不多,你也可以完成一些任务,但是,如果有一个好的算法背景,那么你可以做的事情就多得多。
我希望有越来越多的人在本科阶段注重算法和数据结构方面的知识,因为这是基础中的基础,而不是看似很有前途的web开发、安卓IOS开发等等。要知道,基础不牢,地动山摇。
对于少量元素的排序,它是一个有效的算法。它的时间复杂度为 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开发等等。要知道,基础不牢,地动山摇。
相关文章推荐
- mysql
- arrayAdapter.notifyDataSetChanged();更新数据失败
- 实际问题与C语言会擦出什么的火花
- Java并发编程:volatile关键字解析
- 为什么要先装IIS后装.Net Framework?
- Http中的身份传递
- 导入新的javaweb工程出现The superclass "javax.servlet.http.HttpServlet" was not found
- linux基本命令(3)——pwd命令
- 项目管理工具maven
- leetcode 343. Integer Break
- <jsp:include>标签 和 include 指令的比较
- 如何保证Android与服务器的DES加密保持一致
- C++DLL导出类(快排,堆排,插入排序,选择排序,冒泡排序)
- yum error - package is a duplicate with
- hadoop学习
- CodeForces 669E Little Artem and Time Machine(主席树+树状数组)
- 论坛收录贴
- 【BZOJ1009】【codevs2325】GT考试,kmp+矩阵加速DP
- LinkedHashMap源码分析
- ZOJ 3946 Highway Project 优先队列dijk