我有一个非常大的向量,它存储 100000 个不同的值,范围从 0 到 50000。它们代表硬盘上的柱面,我想根据用于磁盘调度的三种不同算法对这个向量进行排序。到目前为止,我从一个文件中读取了这 100000 个值,将它们存储到一个向量中,然后根据所需的算法(FCFS、SCAN、SSTF)对它们进行排序。问题是,它需要的时间太长,因为我正在这样做最没有创意的方式:
public static Vector<Integer> sortSSTF(Vector<Integer> array){
Vector<Integer> positions = new Vector<Integer>(array);
Vector<Integer> return_array = new Vector<Integer>();
int current_pos = 0,minimum,final_pos;
while(positions.size() > 0){
minimum = 999999;
final_pos = current_pos;
for(int i=0 ; i < positions.size() ; i++){
//do some math
}
}
return_array.add(final_pos);
current_pos = final_pos;
positions.removeElement(final_pos);
}
return return_array;
}
我的函数将向量作为参数,对其进行复制,进行一些数学运算以从复制的数组中找到所需的元素并将其存储在另一个数组中,该数组应根据所选算法进行排序。但是在一个数组中N个元素,取N个!迭代完成,这太多了,因为代码应该至少执行 10 次。
我的问题是,我怎样才能使这种排序更有效率?