數(shù)組循環(huán)移位操作實(shí)例
更新時(shí)間:2013年09月17日 16:27:22 作者:
這篇文章介紹了數(shù)組循環(huán)移位操作實(shí)例,有需要的朋友可以參考一下
題:
如標(biāo)題,要求時(shí)間復(fù)雜度為O(N)。
解法:
右移k位,前k位逆序,后N-k位逆序,再整個(gè)逆序即可。
#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;
}
如標(biāo)題,要求時(shí)間復(fù)雜度為O(N)。
解法:
右移k位,前k位逆序,后N-k位逆序,再整個(gè)逆序即可。
復(fù)制代碼 代碼如下:
#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)文章
簡(jiǎn)單談?wù)勱P(guān)于C++中大隨機(jī)數(shù)的問(wèn)題
這篇文章主要介紹了關(guān)于C++中大隨機(jī)數(shù)的問(wèn)題,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。2017-01-01C++ txt 文件讀取,并寫(xiě)入結(jié)構(gòu)體中的操作
這篇文章主要介紹了C++ txt 文件讀取,并寫(xiě)入結(jié)構(gòu)體中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12利用ace的ACE_Task等類(lèi)實(shí)現(xiàn)線程池的方法詳解
本篇文章是對(duì)利用ace的ACE_Task等類(lèi)實(shí)現(xiàn)線程池的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++string底層框架模擬實(shí)現(xiàn)代碼
本節(jié)文章主要說(shuō)明淺拷貝和深拷貝的優(yōu)缺點(diǎn),以及仿寫(xiě)string類(lèi)的邏輯并分析實(shí)現(xiàn)過(guò)程,對(duì)C++string底層框架模擬實(shí)現(xiàn)代碼感興趣的朋友一起看看吧2021-11-11