02 2018 档案
摘要:思路: 1、将一组需要排序的数中的第一个数作为准则 2、对于剩余的数,如果小于该准则则放在该数的左边,否则放在它的右边 3、对于该准则左边和右边的数分别再重复1、2 思考: 1、需要使用辅助数组y来暂时存放已排好的数据 2、需要使用a、b来记录需要排序的数据存放的位置编号范围,后面递归时需要用到 3
阅读全文
摘要:堆排序思路: 1、将数据存在数组的1~n的编号中 2、根据元素的个数算出满二叉树的高度,记录为k 3、从第k-1层的每个节点开始处理,将以每个节点为根节点的子树变成大顶堆 (这里使用exchange()函数,该函数将在该节点、左右子女节点中找出值最大的节点,用flags记 录其编号,将j节点的值交换
阅读全文
摘要:代码思路: 这里实现的是稳定的从小到大排序; 将需要排序的数组分为长度为gap的组(gap为1,2,4,····gap小于等于数组的总长度) 对于长度为gap的数组,对半分成两组(由于这两组是分组长度为gap/2时的分组,所以组内是有序的),将这两组使用merge()函数进行合并排序 对于末尾长度不
阅读全文
摘要:希尔排序是不稳定的,大概思想为选取步长为h(这里选取h = n / 2,直到h = 1为止), 当步长为h时,对应有h个分组,对每个分组进行直接插入排序
阅读全文
摘要:对于序列中第二个数开始,使用二分法查找其插入的位置,代码中最后low的值即为该数所在的位置, 注意跳出循环的条件为low > high,不能取等号 为保证为稳定的排序,if(a[mid]==x) low =mid + 1;
阅读全文
浙公网安备 33010602011771号