关于一个排序算法
#include <iostream>using namespace std;
int main()
{
int num = {10,9,8,7,6,5,4,3,2,1};
for (int i = 0;i < 10;i++)
{
cout<<num<<' ';
}
cout<<endl;
int max = num;
for (int i = 0;i < 10;i++)
{
if (num > max)
{
max = num;
}
}
int sort,min = num,tmp;
for (int i = 0;i < 10;i++)
{
sort = max;
}
for (int i = 0;i < 10;i++)
{
for (int j = 0;j < 10;j++)
{
if (num < min)
{
min = num;
tmp = j;
}
}
sort = min;
num = max;
}
for (int i = 0;i < 10;i++)
{
cout<<sort<<' ';
}
return 0;
}
这是比赛的时候临时想出来的一个算法(主要是因为快速排序那样的算法忘了{:10_266:} )
比赛的时候是对的
我回家再打了一遍结果不到是不是忘了,做错了
大佬们看看哪错了
主要思路:
先给定一个原始数组(num[])
在每次找出最小数塞入新数组(sort[])
比较过的最小数变成最大数
如果这是一个新算法
请大家千万不要以自己的名义发布出去
因为这可能是我先想出来的 二次编辑:清一定要看
补充最后一部分:
如果这个算法没错,只是环境设定有问题
请大家不要发布
如果设个算法本身有问题且是你修改的
你可以发布(可以跟我说一下) 这不就是选择排序的思想吗,比选择排序还要暴力,而且min从第一次找到最小之后还没有去更新,导致最后输出的都是数组最小的元素 baige 发表于 2020-12-20 21:08
这不就是选择排序的思想吗,比选择排序还要暴力,而且min从第一次找到最小之后还没有去更新,导致最后输出 ...
我在num = max;更新了 兄嘚,这不就是传说中的 泡泡排序 嘛。。。每次找最小值放在前面,不对这个比冒泡还慢一点{:5_107:}
我看你的代码是不是想每次搜最大最小让后加到新的里面,然后再搜最大最小?直到原列表空为止? Sebass 发表于 2020-12-21 03:02
兄嘚,这不就是传说中的 泡泡排序 嘛。。。每次找最小值放在前面,不对这个比冒泡还慢一点
我看 ...
每次找最小值塞到新数组里
搜过的最小值变成最大值 冰清玉洁丸 发表于 2020-12-21 16:41
每次找最小值塞到新数组里
搜过的最小值变成最大值
我没太看懂哦,你给我举个例子呗。搜过的最小值怎么变成最大啊。 这不是啥新算法(新算法早被发明出来了)其实是选择排序,代码有两个问题:
1. 33行j应初始为i+1
2. 32行后就得初始化tmp与min,tmp=i(设最小值位置是i),min=a(设最小值为a)
3. 完全没有记录sort的必要,如果在你的代码上改,那就是这样:
for (int i = 0;i < 10;i++)
{
int tmp=i,min=num;
for (int j = i+1;j < 10;j++)
{
if (num < min)
{
min = num;
tmp = j;
}
}
swap(num,num);
}
简单写法:
for (int i=0;i<10;++i)
for (int j=i+1;j<10;++j)
if (num>num)
swap(num,num);
stl写法:
sort(num,num+10);
页:
[1]