
数据结构
Watch_dou
一名算法工程师,欢迎交流,由于比较忙,来不及回复评论,有事可以私戳我
展开
-
插排之希尔排序算法
步骤 将数据分成d = n//2 组,每一趟希尔排序从元素d开始,采用直接插排。 每个元素的比较和插入均在同一组内进行。 更新d = d//2 。 直到d=0时停止,当d=1时,相当于对近乎有序的结果进行一次完整的直接插排。 图解 图片来源 复杂度 时间复杂度: 最好的情况,时间复杂度O(n)O(n)O(n)。 最差的情况,时间复杂度(n2)(n^2)(n2)。 平均的...原创 2020-03-25 12:59:08 · 419 阅读 · 0 评论 -
交排之冒泡排序算法
步骤 从最后一个元素开始,进行相邻两元素比较,若前后元素是逆序,则实施交换。 第一遍下来,排在第一个元素是最小的元素,称为有序区(也是全局有序区),其余的是无序区。 之后,按照第一步的方法继续在其余的无序区进行比较、交换。 直到所有元素都划分到有序区(即无序区为空)。 改进: 若元素在一趟冒泡的过程中未发生交换,则说明数据已经全部有序,就无需继续冒泡下去,直接输出即可。 图解 图片来源 ...原创 2020-03-25 12:56:49 · 377 阅读 · 0 评论 -
交排之快速排序算法
步骤 选取基准:从数据中选择一个数作为基准值(pivot),一般选择最左边。 分区操作:将数据中小于基准的全部放在pivot的左边位置,其余放在右边位置。该(分区)操作完成之后,原来的基准会在数据的中间某一位置。 递归下去,得到有序结果。 图解 图片来源 详情 List = [5, 1, 3, 2, 4],s = 0, t = 4 基准值tmp = 5,i=s,j=t j从右向左移动,...原创 2020-03-25 12:53:21 · 455 阅读 · 0 评论