【发布时间】:2015-12-14 14:02:40
【问题描述】:
我正在尝试从高到低编写此选择排序,但我不太确定该怎么做。我对排序算法很陌生。
public void selectionSort(String[ ] data){
// for each position, from 0 up, find the next smallest item
// and swap it into place
for (int place=0; place<data.length-1; place++){
int minIndex = place;
for (int sweep=place+1; sweep<data.length; sweep++){
if (data[sweep].compareTo(data[minIndex]) < 0)
minIndex=sweep;
}
swap(data, place, minIndex);
}
}
我之所以尝试更改它的原因是,这里的选择排序会遍历数组的其余部分,寻找最小值然后将其交换到前面。我想更改算法,以便它还在剩余部分中寻找最大值,并将其交换到后面,以便同时从前面和后面构建一个排序列表。
所有帮助将不胜感激:)
【问题讨论】:
-
什么意思?降序?
-
@SleimanJneidi 是的,降序
-
我相信只有改变 -
if (data[sweep].compareTo(data[minIndex]) > 0) -
@SubhrajyotiMajumder 所以它与 for 循环无关?
-
是的,比较是排序的关键。
标签: java algorithm sorting selection-sort