摘要:
冒泡排序是最简单的排序算法,因为很容易实现,并且也容易理解。基本思想就是每一趟迭代都把最大的元素移动到序列的最末尾(或者是把最小的元素移动到最前面),即数值大的元素像泡泡一样“冒”到了最后。最近看到一篇博客上说冒泡排序在最佳情况下(序列已经是有序的)的时间复杂度为O(n),比快排和归并排序的O(nlog(n))还要快。我对此感到非常怀疑,因为按照最普通没有任何优化的写法,我觉得冒泡排序无论待排的序列是什么情况,其复杂度(按比较次数来算)都是O(n^2),因为有两层嵌套的循环。下面是Java的实现代码:public static void bubbleSort(int[] a) { for (. 阅读全文
摘要:
题目1:实现一个函数,能够输出一个字符串中的所有字符的所有可能的组合,例如将字符串"dog"作为该函数的输入,那么输出将是"dog","dgo","odg","ogd","gdo","god"。如果字符串中有重复的字符,将它们看作是不同的字符,例如输入"xxx",那么输出将是6个"xxx"。解法1:可以想想我们在写"dog"的全排列时是怎么写的?首先固定第一个字母'd',然后再找出 阅读全文