Ứng dụng giải thuật sắp xếp

Trộn 2 dãy (kỹ thuật 2 con trỏ)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho 2 dãy A và B đã sắp xếp tăng dần. Bạn hãy thực hiện trộn 2 dãy A và B thành 1 dãy C cũng sắp xếp tăng dần.


Ràng buộc: Ràng buộc: ~1 \leq N \leq 2.10^6~; ~-10^6 \leq A[i], B[i] \leq 10^6~


Input:
5
1 3 5 6 9
3
2 7 8
Output:
1 2 3 5 6 7 8 9

Trộn 2 mảng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai mảng đã được sắp xếp A[], B[] gồm N và M phần tử theo thứ tự và số K. Nhiệm của bạn là tìm phần tử ở vị trí số K sau khi trộn hai mảng để nhận được một mảng sắp xếp.


Đầu vào: Dòng đầu tiên chứa 3 số N, M, K; Dòng thứ 2 chứa N số nguyên của mảng A[] Dòng thứ 3 chứa M số nguyên của mảng B[]


Ràng buộc: 1 <= N,M <= 10^4; 1 <= K <= N + M; 1 <= A[], B[] <= 10^6


Đầu ra: In ra đáp án của bài toán


Input:
7 9 14
4 6 7 9 10 10 10
1 1 2 5 7 8 8 9 10
Output:
10

Trộn 2 dãy và sắp xếp (sắp xếp)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai dãy số nguyên dương A và B. Hãy trộn hai dãy với nhau sao cho dãy A được đưa vào các vị trí có chỉ số chẵn, dãy B được đưa vào các vị trí có chỉ số lẻ. Đồng thời, dãy A được sắp xếp tăng dần, còn dãy B được sắp xếp giảm dần. (Chú ý: chỉ số tính từ 0)


Định dạng đầu vào: Dòng đầu tiên ghi số n là số lượng phần tử của 2 dãy. Dòng tiếp theo ghi n số nguyên dương của dãy A. Dòng tiếp theo ghi n số nguyên dương của dãy B.


Ràng buộc: 1≤n≤10^5; 1 ≤ ai,bi ≤ 10^9


Định dạng đầu ra: In ra kết quả theo yêu cầu của bài toán


Input:
4
4 2 7 1
5 6 2 8
Output:
1 8 2 6 4 5 7 2

Sắp xếp dãy số thực

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Xây dựng chương trình nhập vào một mảng các số thực (kiểu double) D gồm N phần tử, sau đó sắp xếp mảng đó theo thứ tự giảm dần.


Ràng buộc ~0 < N \leq 10^6~, ~-10^6 \leq D[i] \leq 10^6~


Input:
5
1.3 0.8 7.2 6.7 2.5
Output:
7.2 6.7 2.5 1.3 0.8

Sắp xếp nổi bọt (bubble sort)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp đổi chỗ trực tiếp.


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input:
4
5 7 3 2
Output:
Buoc 1: 2 5 7 3 
Buoc 2: 2 3 5 7 
Buoc 3: 2 3 5 7

Sắp xếp chọn (selection sort)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp chọn.


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input:
4
5 7 3 2
Output:
Buoc 1: 2 7 3 5
Buoc 2: 2 3 7 5
Buoc 3: 2 3 5 7

Sắp xếp chèn (insertion sort)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp chèn.


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input:
4
5 7 3 2
Output:
Buoc 0: 5
Buoc 1: 5 7
Buoc 2: 3 5 7
Buoc 3: 2 3 5 7

Sắp xếp đổi chỗ trực tiếp

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp đổi chỗ trực tiếp để sắp xếp mảng theo thứ tự tăng dần.


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input:
4
5 7 3 2
Output:
Buoc 1: 2 7 5 3
Buoc 2: 2 3 7 5
Buoc 3: 2 3 5 7

Sắp xếp gộp (merge sort)

Nộp bài
Time limit: 3.0 / Memory limit: 256M

Point: 1

Cho mảng A có N phần tử, hãy sắp xếp lại mảng A theo thứ tự tăng dần sử dụng thuật toán sắp xếp gộp Merge Sort


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input 01:
7
1 5 2 4 10 9 8
Output 01:
1 2 4 5 8 9 10
Input 02:
14
10 8 9 12 11 3 1 2 7 5 6 2 3 4
Output 02:
1 2 2 3 3 4 5 6 7 8 9 10 11 12

Sắp xếp nhanh (quick sort) với chốt là phần tử đầu tiên (bên trái)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A có N phần tử, hãy sắp xếp lại mảng A theo thứ tự tăng dần sử dụng thuật toán sắp xếp nhanh quick sort với chốt (pivot) là phần tử đầu tiên


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input 01:
7
1 5 2 4 10 9 8
Output 01:
1 2 4 5 8 9 10
Input 02:
14
10 8 9 12 11 3 1 2 7 5 6 2 3 4
Output 02:
1 2 2 3 3 4 5 6 7 8 9 10 11 12

Sắp xếp nhanh (quick sort) với chốt là phần tử cuối cùng (bên phải)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A có N phần tử, hãy sắp xếp lại mảng A theo thứ tự tăng dần sử dụng thuật toán sắp xếp nhanh quick sort với chốt (pivot) là phần tử cuối cùng


Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~


Input 01:
7
1 5 2 4 10 9 8
Output 01:
1 2 4 5 8 9 10
Input 02:
14
10 8 9 12 11 3 1 2 7 5 6 2 3 4
Output 02:
1 2 2 3 3 4 5 6 7 8 9 10 11 12

Sắp xếp các xâu theo độ dài

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một danh sách gồm N xâu ký tự, hãy sắp xếp lại các xâu đó theo thứ tự xâu nào dài hơn sắp xếp lên trước, nếu các xâu có độ dài bằng nhau thì xâu nào có thứ tự từ điển nhỏ hơn sẽ được sắp xếp lên trước.


Ràng buộc: ~0 < N \leq 10^6~


Input 01:
3
ab abcde abc
Output 01:
abcde abc ab
Input 02:
6
abc efghi abcdef abcde 123 abc1234
Output 02:
abc1234 abcdef abcde efghi 123 abc

Sắp xếp mảng ký tự

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Xây dựng chương trình nhập vào một mảng gồm N xâu ký tự, sau đó sắp xếp các xâu ký tự đó theo thứ thự giảm dần (theo bảng chữ cái A, B, C)


Ràng buộc: ~0 < N \leq 10^6~


Input 01:
4
abc abd cad bcd
Output 01:
cad bcd abd abc
Input 02:
6
hoc cong nghe that tuyet voi
Output 02:
voi tuyet that nghe hoc cong

Sắp xếp tên lớp

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Xây dựng chương trình nhập vào danh sách lớp gồm N lớp trong trường, sau đó sắp xếp danh sách lớp đó theo thứ tự tăng dần, ví dụ: 7A1, 6A2, 8A3, 6A4 thì sau khi sắp xếp sẽ là 6A2, 6A4, 7A1, 8A3


Ràng buộc: ~0 < N \leq 10^6~


Input:
4
7A1 6A2 8A3 6A4
Output:
6A2 6A4 7A1 8A3

Số xuất hiện nhiều nhất trong mảng (sắp xếp)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một mảng A các số nguyên gồm N phần tử. In ra số xuất hiện nhiều nhất trong mảng và số lần xuất hiện. Nếu có nhiều số xuất hiện bằng nhau thì in ra số nhỏ hơn.


Ràng buộc: ~1 \leq N \leq 2.10^5~; ~-10^9 \leq A[i] \leq 10^9~


input:
5
1 2 2 1 3
Output:
1 2