用java实现选择排序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⽤java实现选择排序
选择排序
从数组中找⼀个最⼩的值或者最⼤值,依次和后⾯的元素进⾏⽐较,第⼀轮⽐较把数组中第⼀⼩的数放到数组索引的第⼀位,第⼆轮把数组中第⼆⼩的数放在数组的第⼆位,⽐较的轮数是数组的长度-1,依次类推,直到排序完成为⽌.
package com.swlz.code;
/*
* @Author liuzheng
* @Date 2021/10/18 22:24
* @Description 选择排序
* @Since version-1.0
*/
import java.io.Serializable;
import java.util.Arrays;
public class SelectSort implements Serializable{
public static void main(String[] args) {
//-1,33,78,56,8 -1,8,33,78,56 .....
int[] arr={33,-1,78,56,8};
// System.out.println(arr.length);
selectsort(arr);
}
//从低到⾼升序第⼀轮是把数组中第⼀⼩的找到,第⼆轮数把数组中第⼆⼩的找到,依次类推.直到排序完成为⽌
public static void selectsort(int[] arr){//外循环控制轮数,内循环控制交换次数
//使⽤逐步推导的⽅法
//第⼀轮33,-1,78,56,8 -> -1,33,78,56,8 ⽐较的总轮数
for (int i = 0; i <arr.length-1; i++) {
//定义变量
int min = arr[i];//假定的最⼩数为数组中的第⼀个元素
int minindex = i;//假定最⼩数的索引
//第⼀轮交换的次数
for (int j = i + 1; j < arr.length; j++) {
//第⼀轮,如果假定的数不是数组中最⼩的数 min是数组中的第⼀位数默认为最⼩数 arr[j]数组中的第⼆位数
//如果数组中第⼀位数⼤于数组的第⼆位数,就把第⼆数赋值给第⼀位数,依次,循环往复,直到把最⼩的数放到第⼀位为⽌
if (min > arr[j]) {//说明假定的最⼩值并不是最⼩的,后⾯还有⽐它⼩的值如果要从⼤到⼩排序改为<即可
min = arr[j];//重置min(最⼩值)
minindex = j;//重置minindex(最⼩值的索引是这个)
}
}//将最⼩值放在arr[0] 即交换(找到最⼩值做交换)即:33,-1,78,56,8
// 第⼀轮后:8,-1,78,56,33(找到最⼩值8和它交换了)第⼀轮排序之后
//第⼀轮结束之后,就把最⼩值放到数组的第⼀位,然后第⼀轮就是后⾯⼏个数进⾏⽐较,
// 就把假定最⼩是是arr[1]第⼆位数,依次进⾏⽐较,依次类推,第⼆轮的最⼩的数就是第⼆位数,
//第⼀轮后将最⼩值放在第⼀位,即交换,第⼆轮就将第⼆⼩的数放在第⼆位,即交换
if (minindex != i) {//minindex=0; 如果最⼩值的索引不等于i
//将最⼩值放在arr[i] 即交换
arr[minindex] = arr[i];//最⼩值的索引把最⼩值放到第⼀个位置arr[0] arr[0]
arr[i] = min;//arr[0]=min 第⼀轮把最⼩值放在第⼀位第⼀轮把第⼆⼩的值放在第⼆位
}
}
System.out.println(Arrays.toString(arr));
}
}。

相关文档
最新文档