java实现选择排序算法
排序算法的原理
以int型数组为例:
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
第一次排序:
//选出arr数组中最小的元素1放到第一个位置
arr = {1, 2, 3, 5, 7, 9, 4, 6, 8, 10};
第二次排序:
//选出arr数组中除1以外最小的元素2放到第二个位置
arr = {1, 2, 3, 5, 7, 9, 4, 6, 8, 10};
第三次排序:
//选出arr数组中除1、2以外的元素3放到第三个位置
arr = {1, 2, 3, 5, 7, 9, 4, 6, 8, 10};
第四次排序:
//选出arr数组中除1、2、3以外的元素4放到第四个位置
arr = {1, 2, 3, 5, 7, 9, 4, 6, 8, 10};
第五次排序:
//选出arr数组中除1、2、3、4以外最小的元素5放到第五个位置
arr = {1, 2, 3, 4, 5, 7, 9, 6, 8, 10};
第六次排序:
//选出arr数组中除1、2、3、4、5以外最小的元素放到第六个位置
arr = {1, 2, 3, 4, 5, 7, 9, 6, 8, 10};
第七次排序:
//选出arr数组中还没有被排序的元素中最小的元素放到第七个位置
arr = {1, 2, 3, 4, 5, 6,7, 9, 8, 10};
第八次排序:
//选出arr数组中还没有被排序的元素中最小的元素放到没有被排序的元素中最靠前的位置
//这里最小的元素是8,8在原本的位置不需要移动
arr = {1, 2, 3, 4, 5, 6,7, 9, 8, 10};
第九次排序:
//10个元素共需要9次排序
int[] arr = {1, 2, 3, 4, 5, 6,7, 8, 9, 10};
排序算法的工作原理是将数组中最小的元素放到数组的最前,再将第二小的元素方法到第二个位置,再将第三小的元素放到第三个位置,依次类推直到数组排序完毕。
代码
/**
* 选择排序算法
*
* @param arr 需要进行排序的int类型数据
*/
public static void selectSort(int[] arr) {
// 外层循环控制核心算法的循环次数
for (int i = 0; i < arr.length - 1; i++) {
// 从index位置开始找寻极值
int index = i;
//内层循环比较大小,将arr[index]的值依次与arr[i]的值比较
for (int j = i + 1; j < arr.length; j++) {
//如果arr[index]的值大于arr[j]的值,将数组下标更改为j的下标
if (arr[index] > arr[j]) {
index = j;
}
}
将arr[index]的值与arr[j]的值交换
if (index != i) {
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}