摘要:
有些经典的算法,我们应该做到信手捏来。一看到某个经典的算法,脑子里马上要想到要怎么解决,最好还要马上动手把他时间出来,不要怕做重复的工作!这就是我以后我要的!信手捏来。随时准备着实现算法!冒泡排序:每次从起始位置开始(j=0),分别比较arr[j]与arr[j+1],若不是降序,则交换位置。这样每轮下来,就可以得到本轮中的最小,放在相应的位置。其实这个算法的关键在于循环的实现,因为每次都可以得此一个最小的,那么下次就不用再对它进行比较了。所以外层循环i每次减少1,可以用来控制循环的范围,内层循环用来控制每次比较。因此冒泡排序总的平均时间复杂度为O(n2)。#include <stdio. 阅读全文
摘要:
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。(出自维基百科)平均时间复杂度Conceptually ,归并算法的基本步骤如下所示: 1)使用递归(recursion)方法把未排序的序列分成n个子序列,每个子序列只包含一个元素(一个元素被认为是有序的); 2)使用归并操作重复合并子序列产生新的序列,直到只剩下一个序列,那么这个序列就是有序的。归并操作(merge) ,也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并操作算法描述归并操作的过程如下: 阅读全文