3.提高效率的第一次尝试对于最自然的排序算法,数学家开始思考如何提高排序算法的效率,这可以通过数学证明。如果要实现这个目标,就必须想办法交换相距很远的元素。具体原理涉及到比较一定的数学证明。因为我不是数学出身,无法完整严谨的写出这个证明。所以,套用一句俗话嘛,有兴趣的可以自己去查资料。Shell排序以其发明者Shell命名。这里有一个故事,在一些书上,这个算法被称为Shell-Metzner排序法,但是,这个叫Metzner的人说“我没有为这个算法做任何事情,我的名字不应该出现在算法名称中”有没有觉得这个Metzner真的很棒?尤其是在现在的环境下,如果这种人能更多的出现在高等教育中,我立刻觉得中国的高等教育就有了希望。作为第一批冲刺突破次级时间边界的算法之一,从交换距离较远的元素的思想出发,在每次交换中将待排序的序列分成几对,两对是交换的,但是两对距离由近到远,不断交换,显得有点抽象,还是先上代码吧。voidShellSort(intnumbers[],intarray_size){intj=0;for(intgap=array_size/2;gap>0;gap=gap/2){cout<<"Sorttimenumber"<<(j+1)<<":";for(inti=gap;i
