摘要:插入排序法: 简单介绍:插入排序在排序过程中会把整个数组分成已排好序和还未排序两部分。每次从未排序部分的开头取出一个数字,插入到已排序的部分。 性质:是稳定的排序法。且最坏的情况下一共要移动(1+2+...+N-1)=(N^2-N)/2次,所以基本是O(n^2)复杂度的排序法,当然输入数据的顺序可以
阅读全文
摘要:Knuth随机洗牌算法:譬如现在有54张牌,如何洗牌才能保证随机性。可以这么考虑,从最末尾一张牌开始洗,对于每一张牌,编号在该牌前面的牌中任意一张选一张和当前牌进行交换,直至洗到第一张牌为止。参考代码如下: 由上述方法可知,每一张牌经过洗牌之后一定不会出现在原来位置,那么一共会有多少情况呢,这其实就
阅读全文
摘要:两个栈实现队列 可以知道栈是先进后出的,把元素先压进第一个栈,之后再把元素抛出,压进第二栈,从第二个栈抛出的元素满足先进先出的原则。 实现queue的push操作:直接把元素都压入第一个栈即可。 实现queue的pop操作:1:判断第二个栈是否有元素?2:若第二个栈有元素,抛出第二个栈的栈顶元素即可
阅读全文
摘要:1: 字符串中,把所有星号都移动到字符串的最前端,举个例子:字符串*ad**das*wq*,处理后变成 *****adadswq 思路:可以建立双指针,第一个指针(记为x)每次指向字符串的最后一个星号的位置,第二个指针(记为y),指向在指针x左边的那些位置当中,从右往左遍历第一个不是星号的字符的位置
阅读全文
摘要:题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的
阅读全文