选择排序
选择排序也属于内部排序法,是从想要排序的数据中,按指定的规则选出某一个元素,在依据规定交换位置后达到排序的目的
选择排序的基本思想是:
- 第一次从arr[0]~arr[n-1]中选出最小值,与arr[0]交换位置
- 第二次从arr[1]~arr{n-1}中选出最小值,与arr[1]交换位置
- 第三次从arr[2]~arr[n-1]中选出最小值,与arr[2]交换位置
- 以此类推下去进行交换位置
- 总共通过n-1次交换,最后便得到一个有序序列
选择排序的思维分析图:
选择排序的思路图解
假如原始的数组为:101,34,119,1
接下来上代码
public static void selectSort(int [] arr){
//arr.length - 1是因为最后一个元素不需要比较,因为这个元素后面没有值了
for(int i = 0; i < arr.length - 1; i++){
int minIndex = 0;//最小值的索引
int min = arr[i];//假设当前数组中的值就是最小值
for(int j = 0; j < arr.length ; j++){//循环结束后min就是最小值
if(min > arr[j]){//如果当前最小值比后面元素大,则需要交换元素值
min = arr[j];
minIndex = j;//并记录元素下标
}
}
//条件不等证明已经进行了数据交换
if(minIdex != i){
arr[minIndex] = arr[i];//将当前元素赋值到刚才确定的最小元素的索引位置
arr[i] = min;//将最小元素赋值给当前元素
}
}
}
以上就是选择排序的代码,主要就是在与每一次循环都是找到最小的值,在放到外层循环的当前元素的位置,如果有数据交换则赋值替换位置,没有则不换位置,继续下一次循环