🧨斯大林排序(Stalin Sort)
2026-08-07 22:33:16
发布于:江苏
——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥——防窥
O (n) 光速跑完,但靠删数据实现有序(程序员玩梗算法)。
🤪核心脑洞
普通排序:元素乱了?交换、挪动、调整位置,把全部数字留下来排整齐。
斯大林排序:数字不听话、破坏递增顺序?直接删掉它!
不改造乱的元素,直接把捣乱分子清除,剩下的自然就是有序数组。
📌步骤
1.记录当前最大值(第一个元素)
2.挨个往后遍历:
3.如果当前数字 ≥ 当前最大值 → 留下,更新最大值
4.如果比最大值小 → 直接扔掉,彻底消失
.遍历结束,剩下的数组一定严格递增
👌欧克直接上代码
#include <iostream>
#include <vector>
using namespace std;
vector<int> stalinSort(vector<int> arr)
{
vector<int> res;
int max_val = arr[0];
res.push_back(max_val);
for(int i = 1; i < arr.size(); i++)
{
if(arr[i] >= max_val)
{
res.push_back(arr[i]);
max_val = arr[i];
}
// 小于max直接扔掉
}
return res;
}
int main()
{
vector<int> a={1,4,2,3,6,5,5,7,7};
vector<int> ans=stalinSort(a);
for(auto x:ans) cout<<x<<" ";
return 0;
}
会丢失大量原始数据!不是真正意义的排序,只是筛出递增子序列。
纯属娱乐千万不要用
全部评论 5
我还有特朗普排序:没人比我更懂排序
3天前 来自 浙江
2(Trump Sort)
3天前 来自 浙江
2直接告诉你 这排好了 尽管根本没排
3天前 来自 浙江
0猴子排序
3天前 来自 浙江
1
斯大林从不会等待任何人
3天前 来自 湖北
0奇迹排序

3天前 来自 湖北
0等待奇迹发生,宇宙帮你排序
3天前 来自 浙江
0
3天前 来自 湖北
0O(n)或O(∞)
3天前 来自 湖北
0
大清洗?
3天前 来自 山东
0不递增的扔到西伯利亚挖土豆去了是吧
3天前 来自 浙江
0


































有帮助,赞一个