久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

java - 希爾排序的疑問

瀏覽:125日期:2023-10-30 18:01:28

問題描述

public static void sort(long[] arr){int h = 1; // 初始化間隔// 計算最大間隔while(h < arr.length / 3){ h = 3 * h + 1;}while(h > 0){ long temp = 0; for(int i = h; i < arr.length; i++){temp = arr[i]; // temp等于數(shù)組第i個元素的值int j = i;while(j > h - 1 && arr[j - h] > temp){ arr[j] = arr[j - h]; j-=h;}arr[j] = temp; } // 下一個h值 h = (h - 1) / 3;} }

疑問:while(j > h - 1 && arr[j - h] > temp) 這行代碼,j > h - 1; 不懂為啥 j > 0 會出現(xiàn)數(shù)組越界異常,而 j > h - 1 就不會。

@奔跑如風(fēng) ,能幫忙看看嗎?謝謝~

問題解答

回答1:

j > h - 1 && arr[j - h] > temp

這兩句合起來看,你的j>0無法保證j - h是大于等于0的。

回答2:

我也覺得可能是j>0無法滿足j-h>=0的情況。你可以把arr數(shù)組開的很大,如果還錯的話那就肯定是這個原因,但是從代碼上看,我覺得j-h始終是大于等于0的。回頭幫你調(diào)試下分析分析。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 来安县| 苏尼特左旗| 东源县| 建德市| 惠水县| 兴安县| 巨鹿县| 岐山县| 定边县| 池州市| 恩平市| 宜兴市| 潮安县| 永嘉县| 宜君县| 蒲江县| 漳州市| 娄烦县| 隆昌县| 芜湖县| 桃园县| 那曲县| 岚皋县| 彭山县| 山西省| 赤城县| 新安县| 辽宁省| 西城区| 黄大仙区| 华宁县| 五莲县| 北宁市| 图片| 五大连池市| 阜阳市| 红河县| 府谷县| 黔西| 清苑县| 石楼县|