随笔分类 -  排序

摘要:思路: 1.每一趟,交换相邻两个数,前一个数大的(小的)往后放,一趟下来,最大(小)的数放在了最后。 2.持续进行,直到所有的数都排序完。 3.优化:如果有一趟没有任何交换,说明已经排序完了。 for(int i=0;i<len;i++) for(int j=0;j<len-i-1;j++):此处- 阅读全文
posted @ 2021-05-05 13:51 wsZzz1997 阅读(54) 评论(0) 推荐(0)
摘要:思路: 1.从最后一个非叶子节点(len/2,len为当前树的长度)开始,将其与左右孩子比较,与较大的孩子交换。到根节点以后,最大(或者最小)的数已经在根了,与最后一个数交换,此时最后一个位置就已经排好了。 2.递归调用,长度-1(最后一个数排好了):sort(a,len-1); public cl 阅读全文
posted @ 2021-05-05 13:30 wsZzz1997 阅读(62) 评论(0) 推荐(0)
摘要:思路: 1.定义一个partition(这利用最简单的:数组的第一个数) 先从右往左找,找到第一个比partition小的数,放在low这个位置(由于此时low这个地方的数已经保存在partition中了,所以不会丢失) 然后从左往右找,找到第一个比partition大的数,将其放于high此时的位 阅读全文
posted @ 2021-05-05 13:18 wsZzz1997 阅读(45) 评论(0) 推荐(0)
摘要:算法思路: 归并:先"归"后"并" 1.核心思路:将两个有序的数组和并成一个 aux[]:存放临时的数据 merge(a,low,mid,high):将数组a从low到mid这一段,以及从mid+1到high这一段合并 定义两个指针i和j,i指向low,j指向mid+1,同时往后遍历,将较小的放在a 阅读全文
posted @ 2021-05-05 12:34 wsZzz1997 阅读(68) 评论(0) 推荐(0)