验证复杂度为 O(nlogn)
public static void main(String[] args) {
int [] dataSize = {100000,1000000};
for(int n:dataSize){
Integer[] data = ArrayGenerator.generateRandomArray(n,n*100);
long start = System.nanoTime();//纳秒
sort(data);
if(SortingHelper.isSorted(data)){
throw new RuntimeException("SelectionSort Failed");
}
long end = System.nanoTime();
double time = (end-start)/1000000000.0;
System.out.println("n = "+ n + ": " + time + "s");
}
}
【结果】
n = 100000: 0.1061827s
n = 1000000: 0.4314915s
复杂度分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TWKBqqCI-1610469489695)(16309E9CCB344C3ABB9AB0E7398F8D2C)]
子节点的数目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UraHQcXM-1610469489698)(1E9A0F8FFC1A4D34AE83AD474A16EB8A)]