摘要: 冒泡排序(Bubble Sort)冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。平均时间复杂度 /// /// 冒泡排序 /// /// /// public static void BubbleSort(int[] arr, int count) ... 阅读全文
posted @ 2013-09-06 18:27 曾祥展 阅读(1209) 评论(2) 推荐(0) 编辑
摘要: 折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;B 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。C 如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。时间复杂度折半搜索每次把搜索区域减少一半,时间复杂度为。(n代表集合中元素的个数)空间复杂度 /// /// 二分查找 /// /// /// 开始索引 ... 阅读全文
posted @ 2013-09-06 17:44 曾祥展 阅读(11013) 评论(1) 推荐(0) 编辑
摘要: 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为:1.从数列中挑出一个元素,称为 "基准"(pivot),2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退 阅读全文
posted @ 2013-09-06 13:40 曾祥展 阅读(1949) 评论(1) 推荐(0) 编辑