#include <iostream>
int main()
{
int a[]={10,6,9,5,2,8,4,7,1,3};
int len=sizeof(a)/sizeof(int);
int temp;
for(int i=0; i<len; )
{
temp = a[a[i]-1];
a[a[i]-1]=a[i];
a[i]=temp;
if(a[i] ==i+1)
i++;
}
for(int j=0; j<len; j++)
cout << a[j] << ",";
return 0;
}
}
这个算法其实是数学思想-分情况讨论的经典应用。
1.一个数字如果在它该在位置上,那么算法继续作用下一个数。
2.如果当前位置的数比该位置本来应有的数大,那么把它与后面的数交换。
3.如果当前位置的数比该位置本来应有的数小,那么把它与后面的数交换。
本文共 106 个字数,平均阅读时长 ≈ 1分钟
就是TMD快速排序