【发布时间】:2019-03-27 22:57:04
【问题描述】:
在学校作业中,我应该创建一个排序算法。
我做了以下事情:
//array "ints" has already been declared
int s = 0;
for(int i=0;i<ints.length;i++) {
for(int j=i+1; j<ints.length; j++) {
if(ints[i]>ints[j]) {
s = ints[j];
ints[j]=ints[i];
ints[i]=s;
}
}
}
老师把上面的算法叫做“冒泡排序”。然而,据我所知,(在谷歌上)上面的代码不是冒泡排序,冒泡排序看起来更像下面的代码:(可能不是最有效的)它的版本,但无论如何)
//array "ints" has already been declared
int sub = 0;
int swaps = 100;
if (ints.length>1) {
while(swaps>0) {
swaps=0;
for(int i=0; i<ints.length-1; i++) {
if(ints[i]>ints[i+1]) {
sub = ints[i+1];
ints[i+1]=ints[i];
ints[i]=sub;
swaps++;
}
}
}
}
我确定我实际上并没有发明一种新的排序算法,但我找不到任何排序算法使用与我编写的代码相同的过程。
我的算法有名字吗?
注意,它比较的是不相邻的值和排序过程,并且算法不一定在经过算法而不交换的情况下完成。这两者都表明它是不是冒泡排序。可能是版本选择排序。
我不想知道它的效率如何;我正在努力自己找出答案。
【问题讨论】: