• 数组循环移位问题


    数组循环移位问题

    数组逆序

    void reverse(int* array, int sIndex, int eIndex)
    {
    	int tmp;
    	while (sIndex < eIndex) {
        	tmp = array[eIndex];
        	array[eIndex] = array[sIndex];
        	array[sIndex] = tmp;
    
        	sIndex++;
        	eIndex--;
    	}
    }
    

    循环左移

    void left_rotate(int* array, int len, int k)
    {
        if (NULL == array || 0 >= len || 0 >= k) {
            return;
        }
    
        k %= len;
        if (0 == k) {
            return;
        }
    
        reverse(array, 0, k - 1);
        reverse(array, k, len - 1);
        reverse(array, 0, len - 1);
    }
    

    循环右移

    void right_rotate(int* array, int len, int k)
    {
        if (NULL == array || 0 >= len || 0 >= k) {
            return;
        }
    
        k %= len;
        if (0 == k) {
            return;
        }
    
        reverse(array, 0, len - k - 1);
        reverse(array, len - k, len - 1);
        reverse(array, 0, len - 1);
    }
  • 相关阅读:
    快速排序
    优先队列
    堆排序
    树、二叉树基础
    分治法
    递归算法详细分析
    算法基础
    Linux文件系统详解
    fs/ext2/inode.c相关函数注释
    块设备的读流程分析
  • 原文地址:https://www.cnblogs.com/WONDERFUL-cnblogs/p/5025628.html
Copyright © 2020-2023  润新知