Truyền đối tượng (object) vào hàm (function) trong C++
1. Truyền đối tượng như là tham số cho hàm Tham số của một hàm (function)...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
1. Giới thiệu bài toán sắp xếp Cho danh sách có n phần tử a0, a1, a2,…,an-1. Bài toán sắp xếp là quá trình xử lý các phần tử trong danh sách để đặt chúng theo một thứ tự thỏa mãn một số tiêu chuẩn nào đó dựa trên thông tin lưu tại mỗi phần […]
Cho danh sách có n phần tử a0, a1, a2,…,an-1. Bài toán sắp xếp là quá trình xử lý các phần tử trong danh sách để đặt chúng theo một thứ tự thỏa mãn một số tiêu chuẩn nào đó dựa trên thông tin lưu tại mỗi phần tử.
Ví dụ, sắp xếp điểm trung bình theo thứ tự tăng dần, sắp xếp danh sách sinh viên tăng theo tên,..
Cho danh sách có n phần tử a0, a1, a2,…,an-1. Giả sử muốn sắp xếp danh sách a theo thứ tự tăng dần. Nếu i < j và ai > aj thì ai và aj là cặp nghịch thế.
Ví dụ:
a[0]=34, a[1]=3 là cặp nghịch thế.
Nguyên tắt sắp xếp danh sách (giả sử theo thứ tự tăng), ta tiến hành triệt tiêu tất cả các nghịch thế trong danh sách bằng cách hoán vị (hiểu đơn giản là đổi chổ các phần tử trong danh sách).
Xuất phát từ phần tử đầu danh sách, tìm tất các các cặp nghịch thế chứa phần tử này. Triệt tiêu chúng bằng cách đổi chỗ 2 phần tử trong cặp nghịch thế. Lặp lại xử lý trên với phần tử kế tiếp trong danh sách.
Bước 1: i = 0;//Bắt đầu từ đầu dãy
Bước 2: j=i+1;//Tìm a[j] < a[i] với j > i.
Bước 3:
Khi j < n thì kiểm tra: nếu a[j] < a[i] thì hoán vị a[j] và a[i].
Gán j=j+1; rồi thực hiện lại bước 3.
Bước 4: i=i+1; nếu i < n-1 thì lặp lại bước 2, ngược lại -> Dừng.
#include <iostream>
using namespace std;
void Interchange_Sort(int a[], int n){
int i,j;
for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(a[i]>a[j]){
swap(a[i],a[j]);//hoán vị a[i] và a[j]
}
}
}
}
void main()
{
int a[5] = {8, 4, 1, 6, 5};
Interchange_Sort(a, 5);
cout<<"Mang sau khi sap xep:"<<endl;
for(int i=0;i<5;i++){
cout<<a[i]<<" ";
}
system("pause");
}
Mang sau khi sap xep:
1 4 5 6 8Số phép so sánh: Ở mỗi lượt thứ i, luôn có (n-i) lần so sánh a[i]>a[j]. Số lần so sánh là:
Số phép hoán vị tuỳ thuộc vào kết quả so sánh.
Có thể ước lượng trong từng trường hợp như sau:
| Trường hợp | Số lần so sánh | Số lần hoán vị |
| Tốt nhất | n(n-1)/2 | 0 |
| Xấu nhất | n(n-1)/2 | n(n-1)/2 |
Độ phức tạp thuật toán là O(n2).