// stdlib/examples/sorting_demo.aether
// Sorting(排序)算法示例
PRINTLN("=== Aether 排序算法示例 ===")
PRINTLN("")
// 测试数据
Set DATA [64, 34, 25, 12, 22, 11, 90, 88, 45, 50, 21, 77]
PRINTLN("原始数据: " + TO_STRING(DATA))
PRINTLN("")
// 1. 冒泡排序
PRINTLN("1. 冒泡排序(Bubble Sort)")
Set SORTED BUBBLE_SORT(DATA)
PRINTLN("升序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
Set SORTED BUBBLE_SORT_DESC(DATA)
PRINTLN("降序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_DESC(SORTED)))
PRINTLN("")
// 2. 选择排序
PRINTLN("2. 选择排序(Selection Sort)")
Set SORTED SELECTION_SORT(DATA)
PRINTLN("升序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
Set SORTED SELECTION_SORT_DESC(DATA)
PRINTLN("降序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_DESC(SORTED)))
PRINTLN("")
// 3. 插入排序
PRINTLN("3. 插入排序(Insertion Sort)")
Set SORTED INSERTION_SORT(DATA)
PRINTLN("升序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
Set SORTED INSERTION_SORT_DESC(DATA)
PRINTLN("降序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_DESC(SORTED)))
PRINTLN("")
// 4. 归并排序
PRINTLN("4. 归并排序(Merge Sort)")
Set SORTED MERGE_SORT(DATA)
PRINTLN("升序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
Set SORTED MERGE_SORT_DESC(DATA)
PRINTLN("降序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_DESC(SORTED)))
PRINTLN("")
// 5. 快速排序
PRINTLN("5. 快速排序(Quick Sort)")
Set SORTED QUICK_SORT(DATA)
PRINTLN("升序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
Set SORTED QUICK_SORT_DESC(DATA)
PRINTLN("降序: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_DESC(SORTED)))
PRINTLN("")
// 6. 堆排序
PRINTLN("6. 堆排序(Heap Sort)已经转移到heap.aether")
// 7. 计数排序
PRINTLN("7. 计数排序(Counting Sort)- 仅适用于非负整数")
Set INT_DATA [5, 2, 9, 1, 5, 6, 3, 8, 2, 4]
PRINTLN("原始数据: " + TO_STRING(INT_DATA))
Set SORTED COUNTING_SORT(INT_DATA)
PRINTLN("排序结果: " + TO_STRING(SORTED))
PRINTLN("验证: " + TO_STRING(IS_SORTED_ASC(SORTED)))
PRINTLN("")
// 8. 通用排序接口
PRINTLN("8. 通用排序接口(默认使用快速排序)")
Set SORTED SORT(DATA)
PRINTLN("SORT(): " + TO_STRING(SORTED))
Set SORTED SORT_DESC(DATA)
PRINTLN("SORT_DESC(): " + TO_STRING(SORTED))
PRINTLN("")
// 9. 排序不同类型的数据
PRINTLN("9. 排序不同规模的数据")
Set SMALL [5, 2, 8, 1, 9]
PRINTLN("小数据集: " + TO_STRING(SMALL))
PRINTLN("排序结果: " + TO_STRING(SORT(SMALL)))
Set MEDIUM [33, 12, 52, 3, 75, 29, 41, 66, 18, 9]
PRINTLN("中等数据集: " + TO_STRING(MEDIUM))
PRINTLN("排序结果: " + TO_STRING(SORT(MEDIUM)))
PRINTLN("")
// 10. 实际应用:成绩排名
PRINTLN("10. 实际应用:学生成绩排名")
Set SCORES [85, 92, 78, 95, 88, 73, 90, 82]
PRINTLN("原始成绩: " + TO_STRING(SCORES))
Set RANKED SORT_DESC(SCORES)
PRINTLN("降序排名: " + TO_STRING(RANKED))
PRINTLN("前三名:")
PRINTLN(" 第1名: " + TO_STRING(RANKED[0]))
PRINTLN(" 第2名: " + TO_STRING(RANKED[1]))
PRINTLN(" 第3名: " + TO_STRING(RANKED[2]))
PRINTLN("")
// 11. 部分排序数组
PRINTLN("11. 检查部分排序的数组")
Set PARTIAL1 [1, 2, 3, 4, 5]
Set PARTIAL2 [1, 3, 2, 4, 5]
Set PARTIAL3 [5, 4, 3, 2, 1]
PRINTLN("数组1: " + TO_STRING(PARTIAL1))
PRINTLN(" 是否升序: " + TO_STRING(IS_SORTED_ASC(PARTIAL1)))
PRINTLN(" 是否降序: " + TO_STRING(IS_SORTED_DESC(PARTIAL1)))
PRINTLN("数组2: " + TO_STRING(PARTIAL2))
PRINTLN(" 是否升序: " + TO_STRING(IS_SORTED_ASC(PARTIAL2)))
PRINTLN(" 是否降序: " + TO_STRING(IS_SORTED_DESC(PARTIAL2)))
PRINTLN("数组3: " + TO_STRING(PARTIAL3))
PRINTLN(" 是否升序: " + TO_STRING(IS_SORTED_ASC(PARTIAL3)))
PRINTLN(" 是否降序: " + TO_STRING(IS_SORTED_DESC(PARTIAL3)))
PRINTLN("")
PRINTLN("=== 示例完成 ===")