1、有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数。
#include <iostream.h> void sort(int *a,int len) { 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++; } } int main() { int a[] = {10,6,9,5,2,8,4,7,1,3}; int len = sizeof(a) / sizeof(int); sort(a,len); for (int j = 0; j < len; j++) cout<<a[j]<<" "; cout<<endl; return 0; }