一、选择排序概念
- 何为选择排序?
简单来说,选择排序就是每次都从数组中查询出最小的数据,放到数组的最前面,直到最后一个数据被排序完,真个数组就被排序。选择排序有点类似冒泡排序,冒泡排序遍历时,每次都是相邻两个元素进行比较,比较完后,将小的元素排到前面,比较次数比较多。选择排序是每次都全部比较,选择其中最小的元素放到最前面。
- 代码实现
package com.daxiong.day4;
// 选择排序
public class SelectSort {
public static void main(String[] args) {
int[] data = {2,3,1,4,5,6,3,1,3};
int[] newData = selectSort(data);
for(int i = 0;i < newData.length;i++){
System.out.print(newData[i] + " ");
}
}
public static int[] selectSort(int[] data){
/** * 小 --> 大 * 从整个数组中挑选中最小值,放到第一中位置, * 再从剩下的 n - 1个中挑选出最小值放到第二中位置,以此类推 * */
/*int min = 0; int minIndex = 0; int len = data.length; for(int i = 0;i < len;i++){ min = data[i]; // 将当前值设定为最小值 minIndex = i; // 当前索引为最小值索引 for(int k = i;k < len;k++){ if(data[k] < min){ min = data[k]; // 如果内循环中比最小值小,则将此值设为最小值,此索引设为最小值索引 minIndex = k; } } data[minIndex] = data[i]; // 默认最小值与出现新的最小值交换 data[i] = min; }*/
/** * 大 --> 小 * 从整个数组中挑选中最大值,放到第一中位置, * 再从剩下的 n - 1个中挑选出最大值放到第二中位置,以此类推 * */
int max = 0;
int maxIndex = 0;
int len = data.length;
for(int i = 0;i < len;i++){
max = data[i];
maxIndex = i;
for(int k = i;k < len;k++){
if(data[k] > max){
max = data[k];
maxIndex = k;
}
}
data[maxIndex] = data[i];
data[i] = max;
}
return data;
}
}