算法名称:选择排序
算法参数:int[] data(待排序的数组),int dataSize(数组实际大小)
算法思想:从数组的第一个元素data[0]直到倒数第二个元素data[dataSize-2],依次和身后的每一个元素作比较,若后者更小(升序)则将索引和值保存下来,直到完成一轮比较,可获得当前一轮最小值,此时将data[k]、data[i]交换。
P.S.:较之冒泡排序,比较方法完全一致,区别在于选择排序一轮只交换一次数据,而冒泡排序只要发现更小的就会立刻交换。在数据量很大时,选择排序会更快,因为交换次数少。(交换也是需要花时间的哦!)
public void selectSort() {
System.out.print("selectSort:");
for (int i = 0; i < dataSize - 1; i++) {
int k = i;//当前一轮最小值索引
int temp = data[i];//当前一轮最小值
for (int j = i + 1; j < dataSize; j++)
if (temp > data[j]) {
temp = data[j];
k = j;
}
data[k] = data[i];//交换data[k]、data[i],一轮只交换一次
data[i] = temp;
}
}