算法思想
(升序 )每次遍历 记录 下 最小值 的 下标,与 当前 待排序 的 元素 交换位置 ,知道 最后 一个 元素
java代码 实现
public class SelectedSort {
/**
* 选择排序的思想:
* 每次遍历标记最小值的下标,与待排序的第一个元素交换位置,直到最后一个元素
*
* @param array 数组
*/
public static void sort(int[] array) {
boolean change;
for (int i = 0; i < array.length - 1; ++i) {
int currentMin = i;
change = false;
for (int j = i + 1; j < array.length; ++j) {
if (array[currentMin] > array[j]) {
currentMin = j;
change = true;
}
}
if (change) swap(array, i, currentMin);
}
}
/**
* 交换数组的两个元素
*
* @param array 数组
* @param first 待排序的第一个元素下标
* @param min 当前循环的最小元素下标
*/
private static void swap(int[] array, int first, int min) {
if (array != null && array.length > 1) {
int tmp = array[first];
array[first] = array[min];
array[min] = tmp;
}
}
}
C++代码实现
//选择排序思想:每次遍历出最小元素并记录下其下标,与待排序元素交换位置,直到最后一个元素
void selectedSort(int array[], int len) {
bool changed;
for (int i = 0; i < len - 1; ++i) {
int min = i;
changed = false;
for (int j = i + 1; j < len; ++j) {
if (array[min] > array[j]) {
min = j;
changed = true;
}
}
if (changed)//交换元素位置
std::swap(array[min], array[i]);
}
}
网友评论