CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN này Giải thích chi tiết về thuật toán sắp xếp nhanh c++ được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Hãy nói về sắp xếp nhanh chóng.
Sắp xếp nhanh, thuật toán sắp xếp được sử dụng phổ biến nhất trong thực tế, nhanh và hiệu quả. Nó được xếp vào hàng tốt nhất trong số các thuật toán N*logN cùng cấp. · .
Ý tưởng cơ bản: chia dữ liệu cần sắp xếp thành hai phần độc lập thông qua sắp xếp một lần. Tất cả dữ liệu trong một phần nhỏ hơn tất cả dữ liệu trong phần kia, sau đó nhanh chóng sắp xếp hai phần dữ liệu riêng biệt theo. phương pháp này. Toàn bộ quá trình sắp xếp có thể được thực hiện đệ quy để toàn bộ dữ liệu trở thành một chuỗi có thứ tự.

Bước này rất quan trọng để chuyển đổi chuỗi thành dạng trên. Chỉ bằng cách thực hiện bước này, bạn mới có thể thực hiện các lệnh gọi đệ quy đến phần bên trái và bên phải của trục xoay. Đây là mã để thực hiện phần này:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
số nguyên
phân vùng_sắp xếp(
số nguyên
mảng[],
số nguyên
tôi,
số nguyên
đ)
{
số nguyên
j=l;
số nguyên
t=mảng[l];
vì
(
số nguyên
tôi = l+1;tôi <=r;tôi++)
{
nếu như
(arr[i]<>
hoán đổi(arr[j+1],arr[i]);
j++;
}
}
hoán đổi(mảng[l],mảng[j]);
trở lại
j;
}
|
Trong đoạn mã trên, tôi coi phần tử ngoài cùng bên trái là phần tử xoay. Mã này rất hiệu quả cho hầu hết việc sắp xếp, nhưng nó không loại trừ các trường hợp riêng lẻ (khi mảng gần như được sắp xếp theo thứ tự hoặc khi có một số lượng lớn các phần tử lặp lại trong mảng. ). Tại thời điểm này, So với sắp xếp hợp nhất, thuật toán sắp xếp của chúng tôi không hiệu quả bằng. Điều này không thể tách rời khỏi nguyên tắc của thuật toán sắp xếp của chúng tôi. Một phân tích chi tiết cho thấy rằng khi mảng gần như được sắp xếp, sắp xếp nhanh chóng của chúng tôi thực sự xuống cấp O. (n^2) cấp độ, điều này rõ ràng là rất kém hiệu quả.
Để tối ưu hóa những khuyết điểm trên, chúng ta có thể chọn ngẫu nhiên các trục, hoặc sử dụng các phương pháp sắp xếp nhanh khác (sắp xếp nhanh hai chiều, sắp xếp nhanh ba chiều). Cách thực hiện cơ bản của việc sắp xếp nhanh Không đi sâu vào chi tiết, bạn đọc quan tâm có thể tham khảo thông tin để tìm hiểu thêm.
Dưới đây là mã triển khai đầy đủ:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#include
#include
sử dụng
không gian tên
tiêu chuẩn;
số nguyên
phân vùng_sắp xếp(
số nguyên
mảng[],
số nguyên
tôi,
số nguyên
đ)
{
số nguyên
j=l;
số nguyên
t=mảng[l];
vì
(
số nguyên
tôi = l+1;tôi <=r;tôi++)
{
nếu như
(arr[i]<>
hoán đổi(arr[j+1],arr[i]);
j++;
}
}
hoán đổi(mảng[l],mảng[j]);
trở lại
j;
}
vô hiệu
phân vùng(
số nguyên
mảng[],
số nguyên
tôi,
số nguyên
đ)
{
nếu như
(l>=đ)
trở lại
;
số nguyên
p=phân_phân_vùng(mảng,l,r);
phân vùng (arr,l,p-1);
phân vùng(arr,p+1,r);
}
số nguyên
chủ yếu()
{
số nguyên
một[5];
vì
(
số nguyên
i=0;i<5;i++)
{
cin>>a[i];
}
phân vùng(a,0,4);
vì
(
số nguyên
i=0;i<5;i++)
{
cout<<>
" "
;
}
trở lại
0;
}
|
Liên kết gốc: http://www.cnblogs.com/agui521/p/6920663.html.
Cuối cùng, bài viết giải thích chi tiết về sắp xếp nhanh c++ này kết thúc tại đây. Nếu bạn muốn biết thêm về giải thích chi tiết về sắp xếp nhanh c++, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi. tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!