当我们需要对一个很大的结构体进行排序时,因为正常的排序需要大量的交换,这就会造成时间复杂度的浪费
因此,我们引入指针,通过指针+临时变量的方式来避免时间复杂度的浪费
间接排序-排序思路:通过开辟一个指针数组,储存结构体的地址。再用插入排序的方法来更改地址存放在指针数组里的位置(即下标) 最后数组储存地址指向的顺序即是排序后的顺序
物理排序-排序思路:通过“N个数字的排序由若干个独立的环组成”——需要排列的数最后操作都是在若干个闭环中进行
我们可以在每个闭环中建立一个临时变量,储存一个数据,根据间接排序后的table与数组下标对齐来实现每个元素只移动一次的操作。最后闭环的元素即为tmp
说出来有点绕,举个例子
下面的这个顺序,我们用TMP储存A[0]--f,
然后访问A[3]--a,把A[3]放到A[0],同时table=0
再访问A[1]--d,把A[5]放到A[1],同时table=1
重复上述操作
最后访问到A[3],这时A[3]为空,且table!=3,把tmp放进去,操作结束