设置两个指针分别从前和从后向中间靠拢进行数据交换
先算出数组长度n
每排序一次,数组长度减1,n->n-1->n-2->……->1
这样经过n次排序数组第1个空间保存最大的数据
然后将最大数据放在数组最后一个位置上,
接着对前n-1个数排序,也是将第二大数据放在第1位置,
然后将第二大数据放在数组倒数第二位置上,
每次数组长度减1,经过n次循环,数组就会升序排列
具体代码见 记序排序_百度百科
时间复杂度O(nlogn),实际数据移动次数要远低于时间复杂度O(nlogn),因为只有两个前大后小的数据才需要交换(升序排序),正常顺序只比较,不移动
空间复杂度O(1),相比归并排序只需要1个内存单元,作临时变量存放单元