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