Giả sử chúng ta có vấn đề sau - chúng ta muốn đọc tập hợp tọa độ (x, y) và tên, sau đó sắp xếp chúng theo thứ tự, bằng cách tăng khoảng cách từ gốc (0, 0). Đây là một thuật toán sử dụng loại bong bóng đơn giản nhất:tìm vị trí gần nhất từ điểm gốc
#include<iostream>
#include <algorithm>
using namespace std;
struct point{
float x;
float y;
char name[20];
};
float dist(point p){
return p.x*p.x+p.y*p.y;
}
void sorting(point pt[],int n){
bool doMore = true;
while (doMore) {
doMore = false; // Assume no more passes unless exchange made.
for (int i=0; i<n-1; i++) {
if (dist(pt[i]) > dist(pt[i+1])) {
// Exchange elements
point temp = pt[i]; pt[i] = pt[i+1]; pt[i+1] = temp;
doMore = true; // Exchange requires another pass.
}
}
}
}
void display(point pt[],int n){
for (int i=0;i<n;i++){
cout<<pt[i].name<< " ";
}
}
int main(){
point pts[1000];
int n=0;
while (cin>>pts[n].name>>pts[n].x>>pts[n].y){
n++;
}
sorting(pts,n);
display(pts,n);
return 0;
}
Nhưng tôi muốn viết thuật toán sắp xếp STL thay vì sắp xếp bong bóng. Làm thế nào để làm như vậy?
Tôi có nghĩa là, làm thế nào tôi nên sử dụng chức năng dist trong thuật toán sắp xếp STL?
+ 1. Nếu 'điểm' là lớn, nó có thể hiệu quả hơn để có' my_sort() 'lấy tham chiếu const tới' điểm' thay vì sao chép các đối tượng. –
Cuộc gọi tốt. Trả lời được cập nhật tương ứng. –