因为C中对数组的删除比较麻烦,所以我没有按照《算法图解》中的思路每次选择最小的元素,而是选择了最大的。
void SelectionSort(int arr[], int length){
//C在函数中传数组长度较为麻烦,所以在数组定义出就将长度定义好传了过来
int i, temp,biggest_index = 0;
while (length){
biggest_index = 0;
for (i = 0; i < length; i++){
if (arr[biggest_index] < arr[i]){
biggest_index = i;
}
}
printf("%d\n", arr[biggest_index]);
temp = arr[biggest_index];
arr[biggest_index] = arr[length - 1];
arr[length -1] = temp;
length --;
}
}
JAVA实现思路同C。
public int[] SelectionSort(int[] arr) {
int length = arr.length;
int biggestIndex;
int i, temp;
while(length > 0) {
biggestIndex = 0;
for(i = 0; i < length; i ++) {
if(arr[biggestIndex] < arr[i]) {
biggestIndex = i;
}
}
temp = arr[biggestIndex];
arr[biggestIndex] = arr[length - 1];
arr[length - 1] = temp;
System.out.println(arr[length - 1]);
length --;
}
return arr;
}