一維陣列反轉c語言 C語言實現陣列的迴圈移位

2021-10-19 04:38:25 字數 1064 閱讀 4838

演算法

reverse array (陣列翻轉)

code

void reverse(int array, int left, int right)

int l, r;

for (l = left, r = right; l < r; l++, r--)

array[l] = array[l] ^ array[r];

array[r] = array[l] ^ array[r]; // l ^ r ^ r = l ^ 0 = l.

array[l] = array[l] ^ array[r]; // l ^ r ^ l = r ^ 0 = r;

上述**通過異或運算來高效實現變數值的交換,請記住:

任何數與0異或的結果都是它本身。

任何數與1異或的結果都是它的相反數。

迴圈左移

假設我們迴圈左移n位,則實現的步驟是:

翻轉陣列的前n位元素;

翻轉陣列剩下的元素;

再翻轉整個陣列,然後就實現了迴圈左移n位的功能。

以上步驟的順序也可以改為step2 -> step1 -> step3.

code:

reverse(array, 0, left_shift_num - 1);

reverse(array, left_shift_num, array_size - 1);

reverse(array, 0, array_size - 1);

迴圈右移

假設我們迴圈右移n位,則實現的步驟是:

翻轉陣列的後n位元素;

翻轉陣列剩下的元素;

再翻轉整個陣列,然後就實現了迴圈右移n位的功能。

以上步驟的順序也可以改為step2 -> step1 -> step3.

code:

reverse(array, 0, array_size - right_shift_num - 1);

reverse(array, array_size - right_shift_num, array_size - 1);

reverse(array, 0, array_size -1);

一維陣列反轉c語言 C語言實現陣列的迴圈移位

演算法 reverse array 陣列翻轉 code void reverse int array,int left,int right int l,r for l left,r right l r l r array l array l array r array r array l array...

一維陣列反轉c語言 (c語言)字串的反轉函式

問題分析 編寫乙個函式reverse string char string 實現 將函式字串中的字元反向排列。要求 不能使用c函式庫中的字串操作函式。程式分析 要實現引數字串的反向排列 1.找到字串陣列中的首元素和末元素的位址。2.定義兩個指標變數left,right,和乙個中間變數實現首末值和中間...

反轉鍊錶 C語言實現

題目要求 在o n 的時間內反轉鍊錶,並返回反轉後鍊錶的頭指標。分析 求解鍊錶問題首先一定要考慮非空問題,而且要注意終止的位置。如圖所示,反轉的時候定義三個節點,pcur代表當前節點 pnext代表指向的下乙個節點 ppre代表前乙個節點。有了這三個節點就可以從前往後遍歷,而且保證鍊錶不會斷裂!in...