一. 选择排序的描述
选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零。 选择排序是不稳定的排序方法。
每次寻找最大(小)放到相应位置
注:红色表示当前最小值,黄色表示已排序序列,绿色表示当前位置。
二. 选择排序的思路
1.选择排序 一共有数组大小 -1轮排序
2.每一轮又是一个循环 ,找出最小的元素下标
2.1先假定当前就是最小的
2.2 然后和后面的数进行比较,如果比这个更小 ,得到这个数的下标
2.3 遍历到最后时 得到本轮的 最小数的下标
2.4 做交换 最小值放入这个待排的位置
三. 代码实现
-
package c06Sort;
-
-
import java.util.Arrays;
-
-
public
class
SelectSort {
-
-
public
static
void
main
(String[] args) {
-
int [] arr= {
20,
40,
30,
10,
60,
50};
//{101,34,119,1};
-
System.out.println(
"排序前的数组");
-
System.out.println(Arrays.toString(arr));
-
-
selectSort(arr);
-
System.out.println(
"排序后的数组");
-
System.out.println(Arrays.toString(arr));
-
}
-
-
public
static
void
selectSort
(int []arr) {
-
// 算法分析时 先简单情况--->复杂 逐步解决问题
-
int index=
0;
-
int temp=
0;
-
for(
int
i
=
0; i<arr.length-
1;i++) {
-
index=i;
-
for(
int j=i+
1; j<arr.length;j++) {
-
if(arr[index]>arr[j]) {
-
index=j;
-
//找到最小元素下标
-
}
-
}
-
//做交换
-
temp=arr[i];
-
arr[i]=arr[index];
-
arr[index]=temp;
-
-
}
-
-
}
-
}
四 .结果