适用于一堆乱糟糟的数据,先挑选出最小的数据,然后依次第二小,第三。。。
package com.example.demo.SortAlgorithm;
/*
*
* @Author: i_heh
* @Date: 2019/7/4
* @Time: 18:10
* @Description:选择性排序
*
*/
import java.util.Arrays;
public class ChoiceSort {
public static void main(String[] args) {
int[] arr={2,3,4,8,7,9,5,1};
int[] res = sort(arr);
System.out.println(Arrays.toString(res));
}
public static int[] sort(int[] data){
int k=0;//选择指针
int tmp=0;//用于交换位置的临时变量
for (int i = 0; i < data.length - 1; i++) {
//遍历第一个到倒数第二个元素
k=i;//假设索引i的数是最小值
for (int j = i+1; j < data.length; j++) {
//遍历第二到最后一个元素
if (data[j]<data[k]){
//如果索引j更小,说明k不是最小,要改
k=j;
}
//这个循环结束的时候k就是最小值的索引
}
//依次找出最小的值所在位置k,与从0开始遍历数组的元素交换
if (k!=i){
tmp=data[k];
data[k]=data[i];
data[i]=tmp;
}
}
return data;
}
}
网友评论