Thuật toán tiêu chuẩn là sử dụng các con trỏ tới điểm bắt đầu/kết thúc và đưa chúng vào trong cho đến khi chúng gặp nhau hoặc giao nhau ở giữa. Trao đổi khi bạn đi
Đảo ngược chuỗi ASCII, tôi. e. một mảng 0-kết thúc trong đó mỗi ký tự phù hợp với 1 ký tự. [Hoặc các bộ ký tự không nhiều byte khác]
voidstrrev[char *head] { if [!head] return; char *tail = head; while[*tail] ++tail; // find the 0 terminator, like head+strlen --tail; // tail points to the last real char // head still points to the first for[ ; head < tail; ++head, --tail] { // walk pointers inwards until they meet or cross in the middle char h = *head, t = *tail; *head = t; // swapping as we go *tail = h; } } // test program that reverses its args #include intmain[int argc, char **argv] { do { printf["%s ", argv[argc-1]]; strrev[argv[argc-1]]; printf["%s\n", argv[argc-1]]; } while[--argc]; return0; }
Thuật toán tương tự hoạt động với các mảng số nguyên có độ dài đã biết, chỉ cần sử dụng tail = start + length - 1 thay vì vòng lặp tìm kết thúc
Mảng là một nhóm các mục dữ liệu có liên quan được lưu trữ với một tên duy nhất
Ví dụ, int sinh viên[30];
Ở đây, sinh viên là một tên mảng chứa 30 tập hợp các mục dữ liệu, với một tên biến duy nhất
hoạt động
Các hoạt động của một mảng được giải thích dưới đây -
Tìm kiếm - Nó được sử dụng để tìm xem một phần tử cụ thể có hiện diện hay không
Sắp xếp - Giúp sắp xếp các phần tử trong một mảng theo thứ tự tăng dần hoặc giảm dần
Traversing - Xử lý mọi phần tử trong một mảng, tuần tự
Chèn - Giúp chèn các phần tử trong một mảng
Xóa - Giúp xóa một phần tử trong một mảng
Trong chương trình này, chúng tôi đang sử dụng kỹ thuật hoán đổi để sắp xếp các phần tử theo thứ tự tăng dần
Logic mà chúng ta đã áp dụng để sắp xếp một mảng theo thứ tự tăng dần như sau -
for[i=0;i