摘要:
快速排序分为经典快速排序和随机快速排序,因为经典快速排序在工程上使用比较少,因此本文只将随机快速排序,它可以看作是经典快速排序的升级版本。 快速排序: 概述: (1) 先生成一个随机数,作为下标,此下标对应的元素作为划分值。 (2) 将划分值与元素末尾的数值进行交换,让划分值处于末尾。 (3) 然后 阅读全文
摘要:
选择排序: 概述: (1) 将0到N-1位置上最小的数与0位置处的数交换; (2) 将1到N-1 位置上最小的数与1位置处的数交换; (3)以此类推,一直到N-1位置处结束,完成排序。 算法稳定性: 不稳定算法。 时间复杂度: O(N²) 代码: 阅读全文
摘要:
插入排序: 概述: (1) 把第一个元素看成一个已排序的元素(因为只有一个,所以可以看成已经排序好的)。 (2)用第二个元素和第一个元素比较,如果第二个元素小于第一个元素,那么进行交换。 用第三个元素和第二个元素比较,如果第三个元素小于第二个元素,那么进行交换。 交换完毕之后再看,现在的第二个元素是 阅读全文
摘要:
直接上代码: 解析: 此方法简洁明了。先来讲一下异或运算的性质: 异或运算可看做不进位的加法! (1) 任何数异或自身等于0。(因为自身就是两个相同的数相加,每一位都一样,要么0要么1,1+1和0+0按照不进位加法就是0) (2) 任何数异或0都等于自身。 这个很好理解,任何数加0都等于本身嘛。 ( 阅读全文
摘要:
冒泡排序: 概述: 1.从首元素开始,依次比较相邻的两个数。 2.如果前一个数大于后一个数,就进行交换,这样就把比较大的数放在了右边的位置上。 3.依次比较,直到最大的数在数组的尾部(即倒数第二个数和倒数第一个数比较完)。 4.重复上述步骤,此时数组尾部为倒数第二个元素。以此类推。 稳定性: 冒泡是 阅读全文
摘要:
对数器生成一个随机数组来排序,从而验证。 下面用C++写一个简单的对数器来完成冒泡排序。 代码: 阅读全文