數(shù)組循環(huán)移位操作實例
更新時間:2013年09月17日 16:27:22 作者:
這篇文章介紹了數(shù)組循環(huán)移位操作實例,有需要的朋友可以參考一下
題:
如標題,要求時間復雜度為O(N)。
解法:
右移k位,前k位逆序,后N-k位逆序,再整個逆序即可。
#include <stdio.h>
#include <stdlib.h>
void reverse(int* array, int b, int e)
{
int temp = 0;
for(; b < e; b++,e--)
{
temp = array[e];
array[e] = array[b];
array[b] = temp;
}
return;
}
void rightShift(int* array, int n, int k)
{
k = k % n;
reverse(array, 0, n - k - 1);
reverse(array, n - k, n - 1);
reverse(array, 0, n - 1);
return;
}
int main()
{
int array[] = {6,7,8,9,1,2,3,4};
int i = 0;
rightShift(array, 8, 4);
for (; i < 8; i++)
{
printf("%d\n", array[i]);
}
return 0;
}
如標題,要求時間復雜度為O(N)。
解法:
右移k位,前k位逆序,后N-k位逆序,再整個逆序即可。
復制代碼 代碼如下:
#include <stdio.h>
#include <stdlib.h>
void reverse(int* array, int b, int e)
{
int temp = 0;
for(; b < e; b++,e--)
{
temp = array[e];
array[e] = array[b];
array[b] = temp;
}
return;
}
void rightShift(int* array, int n, int k)
{
k = k % n;
reverse(array, 0, n - k - 1);
reverse(array, n - k, n - 1);
reverse(array, 0, n - 1);
return;
}
int main()
{
int array[] = {6,7,8,9,1,2,3,4};
int i = 0;
rightShift(array, 8, 4);
for (; i < 8; i++)
{
printf("%d\n", array[i]);
}
return 0;
}
相關(guān)文章
解析如何在C語言中調(diào)用shell命令的實現(xiàn)方法
本篇文章是對如何在C語言中調(diào)用shell命令的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05
使用?c++?在?windows?上定時執(zhí)行一個函數(shù)的示例代碼
這篇文章主要介紹了使用c++在windows上穩(wěn)定定時執(zhí)行一個函數(shù),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
C語言實現(xiàn)linux網(wǎng)卡連接檢測的方法
這篇文章主要為大家詳細介紹了C語言實現(xiàn)linux網(wǎng)卡連接檢測的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
C++ std::make_unique和std::make_shared用法小結(jié)
本文主要介紹了C++ std::make_unique和std::make_shared用法,使用std::make_unique和std::make_shared能夠簡化動態(tài)分配內(nèi)存和構(gòu)造對象的過程,提高代碼的安全性和可讀性,感興趣的可以了解一下2023-11-11

