国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現數組的循環移位的方法示例

2020-01-26 13:25:27
字體:
來源:轉載
供稿:網友

算法

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位,則實現的步驟是:

  1. 翻轉數組的前n位元素;
  2. 翻轉數組剩下的元素;
  3. 再翻轉整個數組,然后就實現了循環左移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位,則實現的步驟是:

  1. 翻轉數組的后n位元素;
  2. 翻轉數組剩下的元素;
  3. 再翻轉整個數組,然后就實現了循環右移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);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 堆龙德庆县| 万荣县| 江陵县| 大庆市| 定远县| 台南市| 寿光市| 莱西市| 平遥县| 日喀则市| 长宁区| 佛坪县| 睢宁县| 古浪县| 三明市| 讷河市| 烟台市| 醴陵市| 葫芦岛市| 久治县| 革吉县| 体育| 鸡东县| 商丘市| 渭南市| 望都县| 中卫市| 辉县市| 民县| 沛县| 湘西| 邯郸县| 聂荣县| 浠水县| 玛沁县| 邢台市| 吴川市| 梨树县| 宿松县| 平舆县| 大连市|