一:主要实现
将待排序列分为有序区和无序区,找到无序区中最小的元素加到有序区末尾
二:问题
1:如何查找无序区去最小的元素
三:问题的解决
1:我们将第一个元素假设最小,下表为index,然后与后面的元素比较,如何比这个小,index=这个元素下标
2:将index指示的元素和假设最小互换
四:源代码
package com.ccut.selectSort;
import java.util.Arrays;
/**
*
* 简单选择排序
*
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr5 = { 0, 12, 15, 9, 20, 6, 31, 24 };
selectSort(arr5);
System.out.println("简单选择排序后: " + Arrays.toString(arr5));
}
/**
*
* 主要思想:
* 每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中
* 特点:
* 记录的移动的次数最少。
* @param arr
*/
private static void selectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int index=i;
for (int j = i+1; j < arr.length; j++) {
if(arr[j]<arr[index])
index=j;
}
if(index!=i)
{
int temp=arr[index];
arr[index]=arr[i];
arr[i]=temp;
}
}
}
}
五:时间复杂度分析
1:好的坏的都为O(n2)