排序在生活中处处可见,打牌用到了插入排序,站队用到了冒泡和选择。算法就是源于生活并高于生活的一门艺术。什么是高于生活?我个人的理解就是把常见的规律总结出来,并把这些规律灵活的应用在生活中。生活中虽然用到了排序但是为什么要抽象为算法呢?学习算法的目的就是为了把生活中的问题在计算机中用算法的工具进行解决。
冒泡排序:先拿出一个数据与它下一个数据进行比较,如果这个数据比较大,则进行交换交换之后继续与后一个比较,一轮结束之后得到最大值(放在最后);然后再重复这个过程直到选出所有的当轮最大值。 插入排序:一个数组假设前面的是有序区从有序区的下一个数据分别跟有序区的数据进行比较,找到比自己数小的位置在这个位置的后面插入这个数据;然后继续有序区的下一个数据进行重复知道所有数据都有序。 选择排序:先假设一个数据时最大的然后所有的数据都跟这个数据进行比较,如果其他数据比这个大的话,把比这个大的数据的数组下标存在一个空间中直到找到数据最大的值得下标,然后进行交换;重复这个过程直到所有的数据有序。
简言之:两两比较并交换就是冒泡;拿一个跟所有的比找到一个最大或最小的就是选择;一个数据与有序区比较进行插入就是插入;
稳定性:所有相等的数经过某种排序之后还能保持排序之前的次序;反之不稳定; 插入冒泡是稳定排序;选择排序是非稳定排序;