//此函数用于逆转数组,left是逆转开始的最左侧,right为最右侧,arraySize是数组大小,用于防止越界 boolReverse(DataType A[], int left, int right, int arraySize) { if(left >= right || right >= arraySize) returnfalse; int mid = (left + right) / 2; for(int i = 0; i <= mid - left; i++) { DataType temp = A[left + i]; A[left + i] = A[right - i]; A[right - i] = temp; } }
voidExchange(DataType A[], int m, int n, int arraySize) { // 下面三步为思路中的三步 Reverse(A, 0, m + n - 1, arraySize); Reverse(A, 0, n - 1, arraySize); Reverse(A, n, m + n - 1, arraySize); }
boolReverse(int R[], int from, int to) { int i, temp; for(i = 0; i < (to - from + 1); i++) { temp = R[from + i]; R[from + i] = R[to - i]; R[to - i] = temp; } }
//数组R,一共有n个元素,向左移动p个元素 //即前p个元素和后n-p个元素换位置 voidExchange(int R[], int n, int p, int arraySize) { // 下面三步为思路中的三步 Reverse(A, 0, p - 1); Reverse(A, p, n - 1); Reverse(A, 0, n - 1); }