荷兰国旗问题

问题一:

给定一个数组arr,和一个数num,请把小于num的数放到数组arr数组的左边,把大于num的数放到数组的右边。

问题二:(荷兰国旗问题)

依然是给定一个数组arr,和一个数num,请把小于num的数放到数组arr数组的左边,把等于num的放在数组的中间,把大于num的数放到数组的右边

问题一

解:

 假设num是5

1.准备一个变量表示小于等于区域的右边界,来到i后会有两种情况,第一种是小于等于num,第二种是大于等于num的。

第一种情况[i]<num   [i]和<=区域下一个做交换,<=区右扩一位置 ,   i++

第二种情况 ,i++

 问题二:

解:

1)[i]<num   [i]和小于区域下一个做交换,<区域右扩,i++

2)[i]=num ,i++

3)[i]>num,[i]和大于区域前一个做交换,>区左扩,i原地不变

 快排1.0

 先在最右边开始选一个数,假如取5那么5就放到<=5的右边界,小于区域就换成<=5,如果下一个数是<=5的就继续放,并以下一个数继续做边界。

如果这个数>5,那么就把它放到>5的区域下一个数还是>5的,那么就以下一个数作为边界。

快排2.0

 堆
完全二叉树

 这就不是完全二叉树了

 堆首先是完全二叉树,其次堆分为大根堆和小根堆

大根堆

在这个二叉树里,每一个子树的最大值就是头节点的值

小根堆

在这个二叉树里,每一个子树的最小值就是头节点的值

 如此反反复复的循环下去

今天主要就学了这个算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值