摘要:
1.堆排序的基本思想: *用堆排序实现升序 * 其主要用到了大根堆的思想(先理解大根堆的思想,再进行堆排序) * * 因为大根堆可以快速找到最大数,所以只要每次都把这个最大数和最后一个数交换,那么依次进行: * 就可以使得最大数被换到最后一个,倒二大的数换到倒二个,直到heapSize缩到0为止,则 阅读全文
posted @ 2022-04-05 22:28
jue1e0
阅读(37)
评论(0)
推荐(0)
摘要:
1.先明确堆的概念: * 堆的定义详解: * 堆即为一个满二叉树,或是一个顺序完全二叉树(即如果没有满二叉树,则有且仅有一个父结点只有左儿子,没有右儿子 * 且这个结点一定是在倒数第二层的最右边) * * 堆在内存中的实际结构就是数组,只不过给它的下标赋予了一些额外的含义 * 在数组中,若一个结点下 阅读全文
posted @ 2022-04-05 22:05
jue1e0
阅读(183)
评论(0)
推荐(0)
摘要:
归并排序利用递归思想将一个数组逐渐进行二分,直到二分到只有一个元素。 再倒着回来将其进行合并,在合并的过程中保证其合并完的结果有序(合并的两部分始终都是部分有序的),一直合并到成为一个完整的数组 图示: 代码及其解析: 1 public static void MergeSort(int[] arr 阅读全文
posted @ 2022-04-05 16:22
jue1e0
阅读(21)
评论(0)
推荐(0)
摘要:
快速排序就是对荷兰国旗问题的一个递归式应用: 即每次随机取出一个数(在这个数组中等概率随机选一个位置,取出一个数),然后把所有小于这个数的一些值放在左边,等于这个数的一些值放在中间,再把大于这个数的一些值放在右边 在递归的对左边和右边的这批数进行做如上的操作,直到递归到只有一个数为止。 代码及解析: 阅读全文
posted @ 2022-04-05 16:08
jue1e0
阅读(32)
评论(0)
推荐(0)
摘要:
荷兰国旗: 给定一个数组arr和一个数num,将其分为三个区域:左侧为<num的区域,中间为=num的区域,右侧为等于num的区域 代码及解析: 1 //给定一个数组arr和一个数num,把小于num的数放在左边,等于num的数放中间,大于num的数放在右边 2 public static void 阅读全文
posted @ 2022-04-05 15:07
jue1e0
阅读(65)
评论(0)
推荐(0)