摘要:
希尔排序是一种改进的插入排序算法,也称为缩小间隔排序。 算法过程 把待排序序列按下标的一定间隔分组,对每组使用直接插入排序算法排序;随着间隔逐渐减少,每组包含的元素越来越多,当间隔减至1时,整个文件恰被分成一组,算法便终止。 间隔怎么确定,这是个数学难题,至今没有解答。Knuth提出了一个间隔序列, 阅读全文
posted @ 2019-03-30 16:04
桃哥
阅读(102)
评论(0)
推荐(0)
摘要:
“直接插入排序”也属于“蛮力”算法的一种,但是与“选择”/“冒泡”排序相比,它的效率相对更高,有较高的实用价值。 排序过程:初始时,待排序序列被分为两组,第1个元素和其余的n-1个元素。第一趟排序时,把第二个元素和第一个元素相比,如果逆序,则交换位置。第m趟排序时,前面m个元素是有序的,后面n-m个 阅读全文
posted @ 2019-03-25 23:12
桃哥
阅读(275)
评论(0)
推荐(0)
摘要:
对于一个正整数N, 计算N! 的位数。例如N=4, 4!=24,那么位数就是2。 直接计算N!的数值,然后再去数位数,这个很难,因为N!很有可能超过int(32bit) 或long(64bit)的表达范围。 换一种思路,假设要求的位数为x, 那么一定满足 10^(x-1) <=N!<10^x。两边取 阅读全文
posted @ 2019-03-18 18:02
桃哥
阅读(998)
评论(0)
推荐(0)
摘要:
题目要求:打印一串整数数字,不能使用循环。例如,输入n=1000, 对于给定阈值T=5000, 打印输出结果为:1000,2000,4000,8000,8000,4000,2000,1000 这个题目是要每次打印后,把该数字加倍,然后再打印,如果超过5000,再逐次减一半。先上坡再下坡。不用循环,目 阅读全文
posted @ 2019-03-14 16:09
桃哥
阅读(177)
评论(0)
推荐(0)
摘要:
排序算法在面试中常被问到,冒泡排序与选择排序是最基本的两种方法,也被列为“蛮力法”。他们算法过程不难,如果你记不住快速排序等算法的过程,那么用它们来代替吧,起码能保留点颜面。 前提:1.假设我们要把列表从小到大排序;2.列表(数组)中有n个元素。 冒泡排序 排序过程:从前往后比较列表中相邻两个元素的 阅读全文
posted @ 2019-03-13 23:54
桃哥
阅读(84)
评论(0)
推荐(0)
浙公网安备 33010602011771号