Java 数组元素进行选择排序
选择排序原理:从0索引处开始,依次和后面的元素进行比较,小的元素往前放,经过一轮比较厚,最小的元素出现在最小的索引处
思路:
如图,第一轮从0索引开始,依次向后进行比较
第二轮从索引1开始
总结规律:数组中有8个元素,经过七轮比较
第一轮比较了七次;第二轮比较了六次;第三轮比较了五次;第四轮比较了四次;第五轮比较了三次;第六轮比较了两次;第七轮比较了一次
依次分析每轮比较
第一次比较
int index = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[index]>arr[i]){
int tem = arr[i];
arr[i] = arr[index];
arr[index] = tem;
}
}
第二次比较
int index = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[index]>arr[i]){
int tem = arr[i];
arr[i] = arr[index];
arr[index] = tem;
}
}
int index = 1;
for (int i = 1+index; i < arr.length; i++) {
if (arr[index]>arr[i]){
int tem = arr[i];
arr[i] = arr[index];
arr[index] = tem;
}
}
依次类推,每次改变 index的值,加一即可,但如此代码都重复了,进行改进
选择排序完整代码从小到大排序
public static void main(String[] args) {
//选择排序原理: 从索引0开始,每一轮依次和后面的数进行比较
int[] arr = {35,17,38,58,95,63,2,85};
for (int index = 0; index < arr.length-1; index++) {
for (int i = 1+index; i < arr.length; i++) {
if (arr[index]>arr[i]){
int tem = arr[i];
arr[i] = arr[index];
arr[index] = tem;
}
}
}
System.out.println(Arrays.toString(arr));
}
此时排序为小到大,若想要打印出从大到小修改if条件里的大于符号,改为小于号即可。