寻求适用于4个元素、含5次比较与5次交换的短稳定排序算法
适用于4元素的简短稳定排序算法(5次比较+5次交换)
以下是满足要求的紧凑实现,确保稳定排序(相等元素相对顺序不变),且仅使用5次比较、最多5次交换:
def stable_sort4(a): if a[1] > a[2]: a[1], a[2] = a[2], a[1] if a[0] > a[1]: a[0], a[1] = a[1], a[0] if a[2] > a[3]: a[2], a[3] = a[3], a[2] if a[1] > a[2]: a[1], a[2] = a[2], a[1] if a[0] > a[1]: a[0], a[1] = a[1], a[0]
验证示例
针对输入 [60, 61, 52, 73](比较时忽略最后一位,即60与61视为相等):
- 第一步:比较索引1(61)与索引2(52),61>52,交换后数组变为
[60, 52, 61, 73] - 第二步:比较索引0(60)与索引1(52),60>52,交换后数组变为
[52, 60, 61, 73] - 第三步:比较索引2(61)与索引3(73),61≤73,不交换
- 第四步:比较索引1(60)与索引2(61),60≤61(视为相等),不交换
- 第五步:比较索引0(52)与索引1(60),52≤60,不交换
最终结果为 [52, 60, 61, 73],符合稳定排序的要求,保持了原数组中60与61的相对顺序。
算法说明
该算法通过逐步调整相邻元素的顺序,每次仅在前面元素大于后面元素时交换(相等时不交换,保证稳定性),经过5次固定的比较操作,确保4个元素最终有序。交换次数最多为5次(每次比较都触发交换的最坏情况),完全满足需求。
内容的提问来源于stack exchange,提问作者pts
相关产品推荐
相关产品推荐

