一 选择排序算法
1 在未排序序列中找出最大(小)元素放在排序序列起始位置
2 在从剩余未排序序列中找出最大(小)元素放在已排序序列末尾
3 重复直到所有元素已排序
二 代码
public static void sort(int[] arr)
{
for(int i=0; i<arr.length-1; i++)
{
int min = i; // 最小值元素下标
for(int j=i+1; j<arr.length; j++)
{
if(arr[min] > arr[j]) // 寻找最小值
{
min = j; // 记录最小值下标
}
}
if(min != i) // 如果本身最小值不用交换,节省时间
{
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
三 选择排序性质
- 比较次数 (n−1)+(n−2)+....+1=n22
- 交换次数为n
- 数据移动最少
- 不稳定