Thêm x vào vị trí cho trước mảng 1 chiều trên ngôn ngữ C

Cho một giá trị x yêu cầu chèn nó vào mảng 1 chiều tại vị trí cho trước.

Cách bước:

Bước 1: Cho i chạy từ n xuống (i > vi trí x cần chèn)

Bước 2: Gắn a[i] = a[i-1]

Bước 3: Quay lại xét điều kiện vòng lặp for, nếu i > vị trí x cần chèn là đúng thì ta giảm i — và tiếp tục thực hiện bước 2. Nếu sai thì thoát vòng lặp gắn a[vị trí] = giá trí x và tăng n ++ lên 1 đơn vị.

// Tim vi tri 1 phan tu
int timx(int a[], int n, int x){
for(int i=0; i<n; i++){
if(x == a[i])
return i;
}
return -1;
}// Them x vao vi tri
void themx(int a[], int &n, int gt, int vitri){
for(int i=n; i>vitri; i–)
a[i]=a[i-1];
a[vitri]=gt;
n++;
}

Xem cách chương trình chạy:

2 3 4 5 6 9 0 3 4 1

1 2 3 4 5 6 7 8 9 10

n chạy 10 > 1

1: 2 3 4 5 6 9 0 3 4 4

2: 2 3 4 5 6 9 0 3 3 4

3: 2 3 4 5 6 9 0 0 3 4

4: 2 3 4 5 6 9 9 0 3 4

5: 2 3 4 5 6 6 9 0 3 4

6: 2 3 4 5 5 6 9 0 3 4

7: 2 3 4 5 8 6 9 0 3 4 1

Gt = 8

Vi tri x= 5

X = 6

N = 10

Lần 1: I = 10 => a[10] = a[9]

Lần 2: 10 > 5 là đúng, I — = 9 => a[9] = a[8]

Lần 3: 9 > 5 là đúng, I — = 8 => a[8] = a[7]

Lần 4: 8 > 5 là đúng, I — = 7 => a[7] = a[6]

Lần 5: 7 > 5 là đúng, I — = 6 => a[6] = a[5]

Lần 6: 6 > 5 là đúng, I — = 5 => a[5] = a[4]

Lần 7: 5 > 5 là sai, a[5] = 8, n ++ = 11