算法学习之一 —— 七种排序算法及其时间复杂度
来源:互联网 发布:js防水涂料重量 编辑:程序博客网 时间:2024/05/24 06:42
突然间想到一句话,以自己写的代码量之低,还不到比较算法的地步。
在大型服务机面前,似乎一切的时间复杂度和空间复杂度都不是问题,所多出的那一点在摩尔定律面前几乎不堪一击。但时代的变化趋势确实智能机日益普及,诚然在工业方面我们有越来越多的资源可供利用,但在更接近社会本身、财富本身的移动互联网上,”小“才是主流。它意味着你需要越少的空间开销,需要你争分夺秒的节省用户触屏时间。仅仅是一项最简单的通讯录索引,都几乎意味着排序、二分、概率补全的应用,更不用说从大量数据方面分析客户的行为习惯,机器学习、图像识别几乎就是数学的天下。
编程不仅仅是语法,那是最基本的。Algorithm,才是开山利刃。
首先要讲的是冒泡算法。时间复杂度达到了0(n^2),几乎你可以认为在n无限大时,达到了n^n的指数级别时间复杂度,不适用于大量数据的排序。但在小部分数组排序时,冒泡排序的代码最为简洁,方便书写(如果不考虑STL里的sort(),这之后还会提到)。
思路如下:
1.将每一次的最大值/最小值依次放到数组的队列尾/首。这需要依次比较第1-2,2-3,,(n-1)-n项。之后只需要比较1-2,2-3,,(n-2)-(n-1)项。
2.一直到n=1时,排序结束。
按照定义我写了两种代码,分别体现了不同的编程思路:
for(i=0;i<n;i++) for(j=1;j<n-i;j++) //if(a[j-1]>a[j] swap(a[j-1],a[j]);
0 0
- 算法学习之一 —— 七种排序算法及其时间复杂度
- 七种排序算法及其复杂度
- 几种常见的排序算法及其时间复杂度——选择排序(三)
- 排序算法之 基数排序 及其时间复杂度和空间复杂度
- 体验复杂度—两种排序算法的运行时间
- 排序算法时间复杂度
- 排序算法时间复杂度
- 排序算法时间复杂度
- 各种排序算法的原理、实现及其时间复杂度
- 八大排序算法思想,时间复杂度,稳定性、及其java实现
- 各种排序算法及其复杂度
- 排序算法之 插入排序、希尔(shell)排序 及其时间复杂度和空间复杂度
- 几种常见的排序算法及其复杂度——冒泡排序(一)
- 几种常见的排序算法及其复杂度——快速排序(二)
- 几种排序算法时间复杂度对比
- 排序算法之 快速排序 及其时间复杂度和空间复杂度
- 排序算法之 归并排序 及其时间复杂度和空间复杂度
- 排序算法之 堆排序 及其时间复杂度和空间复杂度
- huffman树的编译
- android实现背景平铺的三种方法
- Codeforces Round #278(Div2) A B C
- MySQL优化(一)
- iOS中UIScrollView与UIPageControl 同步变化的方法
- 算法学习之一 —— 七种排序算法及其时间复杂度
- Android倒计时功能的实现(一)CountDownTimer类
- 比较顺序存储结构和链式存储结构的优缺点
- Description Resource Path Location Type Java compiler level does not match the version of the instal
- Lesson8 What's your job? 你是做什么工作的?
- C# 图像类Bitmap
- Python基本语法实例:文件处理,字符串转换
- 题目1008:最短路径问题
- myeclipse中的hibernate逆向工程