So it would be O(used+n3)?Code:unsigned rnd(unsigned limit) { return rand() % limit; // O(1) } void permute (int a[], int n) { bool* used = new bool[n]; // O(1) fill (used, used+n, false); // O(used+n) for (int i = 0; i < n; i++) // O(1) n* = O(n) { a[i] = rnd(n); // O(1) while (used[a[i]]) // O(1) n* = O(n) { a[i] = rnd(n); // O(1) } used[a[i]] = true; // O(1) } delete [] used; // O(1) }