基本排序算法分析
来源:互联网 发布:尚学堂大数据贴吧 编辑:程序博客网 时间:2024/05/02 10:17
以前有句话说程序==算法+数据结构,其实不然,如果说编程像是在盖楼房,那么学好数据结构和算法,就是在打下一个完美的地基。
所以今天闲着无聊,给大家总结总结,几个非常非常基础的算法,这在许多公司的笔试,面试中都要可能出现。今天我所要想讨论的是排序算法,说到排序算法,大家在熟悉不过的是冒泡排序算法,在我后来接触的一些列排序算法中,后来想想每个算法都有其巧妙之处,也不单单是为了追求的时间上的效率。下面我就来列出主要的几种排序算法。
1.冒泡排序算法,平均时间复杂度o(n2),作为一种性能还算不错的排序算法
2.选择排序算法
3.插入排序算法
4.归并排序算法
5.桶排序算法
6.基数排序算法
7.希尔排序算法
8.堆排序算法,其中涉及到了一些数据结果中的一些的知识
9.快速排序算法,快速排序算法,在此类中的 排序性能中算是最好吧,但是如果一组数字基本都是有序的情况的时候,快速排序就又会被退化为冒泡排序,基本排序算法差差不多都列在上面了,具体掌握上述中排序算法的精髓,对于面试还是很有帮助的
----------------------------------------------------------
问题:设有一数组,其大小为10个元素(int str[10])数组内的数据是无序。现在要求我们通过编程将这个无序的数组变成一个从小到大排序的数组(从下标为0开始)
思路:按照题目的要求,毫无疑问,正确的结果应该就像这样: 1 2 3 4 5 6 7 8 9 10 要做到这样,最简单和最直接想到的方法就是进行对比交换。
- 首先,把10个数里最小的个数放到下标为0的位置上(str[0])
- 通过将下标为0的数(str[0])与剩下其余9个数进行对比交换(将较少者放置在下标为0的位置上),就可以得到这10个数最小的那个
- 10个数最小的那位确定后,接下来就要找剩下9个数最小的那个。
- 因为已经确定出一个最小的数,所以就不要动str[0],直接从str[1]开始,与剩下的8个数对比交换,找出9个数中最小的那位放到下标为1(str[1])的位置上
- 继续按照这个思路就可以将这十个数变成有序的(从小到大)的数组
代码:
这个方法是比较容易想到的实现方法。但存在不足:就是本来位于前面的较小数被交换到后面
演示:
开始:9 4 5 6 8 3 2 7 10 1 (下标从左到右分别是0~9)按照上面的程序进行对比交换
第一次:4 9 5 6 8 3 2 7 10 1
第二次:4 9 5 6 8 3 2 7 10 1
。。。:(没有交换)
第五次:3 9 5 6 8 4 2 7 10 1
第六次:2 9 5 6 8 3 4 7 10 1
。。。:(没有交换)
第十次:1 9 5 6 8 3 4 7 10 2
可以看出,原来较小的数是在前面的,经过一轮的交换后放到后面了
那么怎样解决这个不足呢?可以使用冒泡排序
什么是冒泡排序呢?
你可以这样理解:(从小到大排序)存在10个不同大小的气泡,由底至上地把较少的气泡逐步地向上升,这样经过遍历一次后,最小的气泡就会被上升到顶(下标为0),然后再从底至上地这样升,循环直至十个气泡大小有序。
在冒泡排序中,最重要的思想是两两比较,将两者较少的升上去
冒泡排序最坏情况的时间复杂度是O(n²)
代码:
1 0
- 基本排序算法分析
- 基本排序算法分析
- 基本的排序算法总结分析
- 基本排序算法的分析和实现
- 数据结构与算法JavaScript - 基本排序算法分析
- 排序-基本排序算法
- 算法:基本排序算法
- 基本算法复习之排序:性能比较、代码分析
- 关于三种基本排序算法的速度直观分析
- 【算法分析】排序算法
- 基本排序算法 - 基本知识点
- 排序算法基本思想
- 常用基本排序算法
- 算法记录 : 基本排序
- 基本排序算法
- 基本排序算法实现
- 基本排序算法
- 基本排序算法思想
- Swift之mutating关键字全解
- tomcat报错1.7java version
- FM ENQUEUE_E_TABLE DEQUEUE_E_TABLE
- POJ 2777 线段树
- 【Unity】Unity手游优化总概
- 基本排序算法分析
- Linux指令--cat,tac
- 朝花夕拾——Java静态内部类加载
- 关于InputFormat的数据划分、Split调度、数据读取问题
- Android之android studio如何解决':app:packageDebug'.(Duplicate files copied in APK META-INF/DEPENDENCIES)
- 记录一下存储过程
- xcode中删除xcdatamodel中的Entity
- 最全的常用正则表达式大全
- jquery hasClass、removeClass、addClass方法