长度为n的数组乱序存放着 0 至n-1. 现在只能进行 0 与其他数的swap,请设计并实现排序。
1 //长度为n的数组乱序存放着 0 至n-1. 现在只能进行 0 与其他数的swap,请设计并实现排序。 2 #include <iostream> 3 4 using namespace std; 5 6 void Sort(int *arr, int len) 7 { 8 for(int i = 0; i < len; i++) 9 { 10 if(arr[i] != i) 11 { 12 swap(arr[0], arr[i]); 13 while(arr[0] != 0) 14 { 15 swap(arr[0], arr[arr[0]]); 16 } 17 } 18 } 19 } 20 21 void printArray(int *arr, int len) 22 { 23 if(!arr || len < 0) 24 cout << "Invalid Input" << endl; 25 for(int i = 0; i < len; i++) 26 { 27 cout << arr[i] << " "; 28 } 29 cout << endl; 30 } 31 32 int main() 33 { 34 const int MAX = 5; 35 int arr[MAX] = {0, 2, 1, 4, 3}; 36 37 printArray(arr, MAX); 38 Sort(arr, MAX); 39 printArray(arr, MAX); 40 41 return 0; 42 }