> nums[j+step
){ int temp = nums[j
;
nums[j
= nums[j+step
;
nums[j+step
= temp;
6.2 希尔-插入排序(快)public void shellInsertSort(int[
nums){ for (int step = nums.length/2; step > 0; step /= 2) { for (int i = step; i < nums.length; i++) { int j = i; int insertNum = nums[i
; while(j-step >= 0 && nums[j-step
> insertNum){
nums[j
= nums[j-step
;
j-=step;
nums[j
= insertNum;
7. 堆排序大顶堆实现升序 , 每次将最大值移到堆的最后一个位置上;
public void heapSort2(int[
nums) { for(int i = nums.length/2-1; i >= 0; i--){
sift(nums i nums.length);
for (int i = nums.length-1; i > 0; i--) { int temp = nums[0
;
nums[0
= nums[i
;
nums[i
= temp;
sift(nums 0 i);
private void sift(int[
nums int parent int len) { int value = https://mparticle.uc.cn/api/nums[parent
; for (int child = 2*parent +1; child < len; child = child*2 +1) { if(child+1 < len && nums[child+1
> nums[child
){
child++;
if(nums[child
> value){
nums[parent
= nums[child
;
parent = child;
else { break;
nums[parent
= value;
8. 计数排序按顺序统计每个数出现次数;
public void countSort(int[
nums){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int num : nums){
max = Math.max(max num);
min = Math.min(min num);
int[
countMap = new int[max-min+1
; for(int num : nums){
countMap[num-min
++;
int i = 0; int j = 0; while(i < nums.length && j < countMap.length){ if(countMap[j
> 0){
nums[i
= j+min;
i++;
countMap[j
--;
else {
j++;
9. 桶排序类似计数排序 , 不同点在于统计的是某个区间(桶)里的数;
public void bucketSort(int[
nums){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int num : nums){
max = Math.max(max num);
min = Math.min(min num);
int bucketCount = (max-min)/nums.length+1;
List<List<Integer>> bucketList = new ArrayList<>(); for (int i = 0; i < bucketCount; i++) {
- 华为|华为再得一个强援,不再孤军奋战,任正非说的果然没错
- javascript|ReactJS开发人员要具备哪些突出技能?
- 华为鸿蒙系统|鸿蒙OS再次更新:围绕超级终端继续优化,并首先适配新机型!
- 显卡|5000mAh+双模5G,仅售944元,买得起用得爽的华为手机
- 日前|2021年全球折叠屏旗舰谁卖的最好?三星一骑绝尘 华为第二
- 三星|中国已有一家类三星的企业,做得比华为更广泛
- 华为|4088元起!华为P50E明日首销:没麒麟、没5G
- 手机芯片性能洗牌:华为不敌联发科、三星,麒麟9000已经跌出前五
- 华为鸿蒙系统|联名华为,车企的流量密码还能管用多久?
- 华为Mate X3折叠屏正式入网,仅支持4G,价格或进一步调低
