Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การหมุนอาเรย์ไปซ้ายในเวลา O(n) และพื้นที่ O(1) ในโปรแกรม C


ได้รับอาเรย์ขนาด n และค่าจำนวนเต็มหลายค่า ต้องหมุนอาเรย์จากดัชนี k ที่กำหนด

การหมุนซ้ายจากดัชนี k ดังภาพ:

การหมุนอาเรย์ไปซ้ายในเวลา O(n) และพื้นที่ O(1) ในโปรแกรม C

ตัวอย่าง

Input: arr[] = {1, 2, 3, 4, 5}
K1 = 1
K2 = 3
K3 = 6
Output:
2 3 4 5 1
4 5 1 2 3
2 3 4 5 1

อัลกอริทึม

START
Step 1 -> Declare function void leftRotate(int arr[], int n, int k)
  Declare int cal = k % n
  Loop For int i=0; i In main()
  Declare array a[]={ 1,2,3,4}
  Declare int size=sizeof(a)/sizeof(a[0])
  Declare int k=1
  Call leftRotate(a, size, k)
  Set k=2
  Call leftRotate(a, size, k)
  Set k=3
  leftRotate(a, size, k)
STOP

ตัวอย่างโค้ด C++

#include 
using namespace std;
void leftRotate(int arr[], int n, int k){
    int cal = k % n;
    for (int i = 0; i < n; i++)
        cout << (arr[(cal + i) % n]) << " ";
    cout << "\n";
}
int main(){
    int a[] = { 1,2,3,4};
    int size = sizeof(a) / sizeof(a[0]);
    int k = 1;
    leftRotate(a, size, k);
    k = 2;
    leftRotate(a, size, k);
    k = 3;
    leftRotate(a, size, k);
    return 0;
}

ผลลัพธ์

การรันโปรแกรมจะได้ผลลัพธ์ดังนี้:

2 3 4 1
3 4 1 2
4 1 2 3