Cách sắp xếp danh sách tăng gấp đôi bằng phần phân số của dấu hai chấm.
ví dụ: Đối với đầu vào <1.2, 2.3, 1.12, 5.1>
, sau khi phân loại, sản lượng nên <5.1, 1.12, 1.2, 2.3>
Trong C#, làm thế nào để sắp xếp danh sách tăng gấp đôi theo định nghĩa?
Trả lời
Bạn có thể đạt được điều này thông qua OrderBy()
và Math.Truncate
phương pháp như như sau. Trong đó x-Math.Truncate(x)
cung cấp cho bạn số sau dấu thập phân và OrderBy
sẽ sắp xếp chúng theo thứ tự tăng dần. Có một cái nhìn tại example này và thử mình với đoạn mã sau
List<double> input = new List<double>(){1.2, 2.3, 1.12, 5.1};
input = input.OrderBy(x=>x-Math.Truncate(x)).ToList();
Console.WriteLine(String.Join("\n",input));
Hoặc bạn có thể thử này cũng .OrderBy(x=>x-(int)x)
thay cho OrderBy(x=>x-Math.Truncate(x)
List
có overload của Sort()
phương pháp mà có một thể hiện của một IComparer<T>
. Các interface là khá dễ dàng để thực hiện và sẽ cho phép bạn để sắp xếp theo bất cứ phương pháp nào bạn muốn:
public class MantissaComparer : IComparer<double>
{
public int Compare(double x, double y)
{
return Comparer<double>.Default.Compare(x - Math.Truncate(x), y - Math.Truncate(y));
}
}
Sau đó, tiêu thụ comparer tùy chỉnh như thế này:
input.Sort(new MantissaComparer());
Tôi thấy thẻ linq
, nhưng giải pháp này có thể tái sử dụng được trong suốt mã của bạn nếu bạn thấy cần thiết, trong khi tránh "quá kỹ thuật" do giao diện 'IComparer' đơn giản.
Sẽ thu hút sự chú ý. Triển khai tốt –
Bạn cũng có thể thử bên dưới mà không sử dụng Math.Truncate
var sortedlist = list.OrderBy(n => n - (int)n).ToList();
Console.Write(String.Join(",", sortedlist));
- 1. javascript sắp xếp mảng tăng gấp đôi loại
- 2. mảng loại tăng gấp đôi trong C
- 3. Làm thế nào để chuyển đổi danh sách các chuỗi để tăng gấp đôi?
- 4. Sắp xếp (một luồng) tăng gấp đôi theo độ lớn tuyệt đối
- 5. Làm thế nào để sắp xếp danh sách IEnumerable?
- 6. Safe char punning * để tăng gấp đôi trong C
- 7. C++ đúc tĩnh hai chiều mảng đôi tăng gấp đôi **
- 8. Danh sách được sắp xếp theo idris (loại sắp xếp)
- 9. Cách sắp xếp danh sách theo danh sách khác?
- 10. Làm thế nào để sắp xếp dấu thập phân khi hiển thị gấp đôi và nổi
- 11. Làm thế nào là phao và tăng gấp đôi đại diện trong C + + (gcc)?
- 12. C# Cách sắp xếp danh sách được sắp xếp theo cột giá trị
- 13. Sắp xếp danh sách theo giá trị
- 14. Làm cách nào để sắp xếp danh sách trong Jinja2?
- 15. Làm thế nào để sắp xếp danh sách liệt kê theo chiều dài của danh sách con
- 16. in createInterface tăng gấp đôi trong terminal
- 17. làm tròn tăng gấp đôi - .5 - sprintf
- 18. Làm thế nào để sắp xếp một danh sách trong C#
- 19. làm thế nào để sắp xếp Danh sách <T> trong C#/.net
- 20. Sắp xếp danh sách theo thứ tự tăng dần theo ngày từ sqlite
- 21. Làm thế nào để có các danh sách được sắp xếp theo thứ tự chính xác
- 22. biến với dấu hoa thị tăng gấp đôi trong Dockerfile
- 23. Làm cách nào để có danh sách, được sắp xếp theo tần suất, trong R
- 24. Danh sách thành số nguyên hoặc gấp đôi trong R
- 25. Cách sắp xếp danh sách trong Scala theo hai trường?
- 26. Sắp xếp danh sách chuỗi có ngày trong C#
- 27. Làm cách nào để tăng gấp đôi bộ đệm trong Bảng điều khiển C#?
- 28. Sắp xếp Danh sách <String> trong C#
- 29. Đúc tăng :: đơn vị :: số lượng để tăng gấp đôi
- 30. Được tăng gấp đôi so với phao nổi trong C#?
bạn đã cố gì? Điều gì đang gây rắc rối cho bạn. Hay là bạn chỉ muốn một ai đó làm công việc cho bạn? Hoặc câu hỏi lịch sử dường như chỉ ra sau này. – TnTinMn
Bạn có biết làm thế nào để có được phần phân đoạn của một đôi? Bạn có biết cách sắp xếp theo quy tắc do người dùng xác định không? Hoặc bạn có thể Google hai bit mã này? Đặt chúng lại với nhau, và bạn có câu trả lời của bạn. –