原理:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。
图解:
第一次排序的代码:
import java.util.Arrays;
/**
* Created by i_science on ${date}
*/
public class Test001 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("没有排序时的数组为:"+Arrays.toString(arr));
//第一次排序
selectSort1(arr);
System.out.println("第一次排完序过后的数组为:"+Arrays.toString(arr));
}
/**
* 选中排序推倒过程
*/
public static void selectSort1(int[] arr){
//第一次排序
int index = 0;//代表第一个元素的索引
for(int i = 1;i<arr.length;i++){
if(arr[i] < arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
}
控制台打印效果:
第二次排序的代码:
import java.util.Arrays;
/**
* Created by i_science on ${date}
*/
public class Test001 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("没有排序时的数组为:"+Arrays.toString(arr));
//第一次排序
selectSort1(arr);
System.out.println("最终的数组为:"+Arrays.toString(arr));
}
/**
* 选中排序推倒过程
*/
public static void selectSort1(int[] arr){
//第一次排序
int index = 0;//代表第一个元素的索引
for(int i = 1+index;i<arr.length;i++){
if(arr[i] < arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第一次比较完后的数组为:"+Arrays.toString(arr));
//第二次排序
index = 1;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第二次比较完后的数组为:"+Arrays.toString(arr));
}
}
控制台打印:
第三次排序的代码:
import java.util.Arrays;
/**
* Created by i_science on ${date}
*/
public class Test001 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("没有排序时的数组为:"+Arrays.toString(arr));
//第一次排序
selectSort1(arr);
System.out.println("最终的数组为:"+Arrays.toString(arr));
}
/**
* 选中排序推倒过程
*/
public static void selectSort1(int[] arr){
//第一次排序
int index = 0;//代表第一个元素的索引
for(int i = 1+index;i<arr.length;i++){
if(arr[i] < arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第一次比较完后的数组为:"+Arrays.toString(arr));
//第二次排序
index = 1;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第二次比较完后的数组为:"+Arrays.toString(arr));
//第二次排序
index = 2;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第三次比较完后的数组为:"+Arrays.toString(arr));
}
}
控制台打印:
第四次排序的代码:
import java.util.Arrays;
/**
* Created by i_science on ${date}
*/
public class Test001 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("没有排序时的数组为:"+Arrays.toString(arr));
//第一次排序
selectSort1(arr);
System.out.println("最终的数组为:"+Arrays.toString(arr));
}
/**
* 选中排序推倒过程
*/
public static void selectSort1(int[] arr){
//第一次排序
int index = 0;//代表第一个元素的索引
for(int i = 1+index;i<arr.length;i++){
if(arr[i] < arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第一次比较完后的数组为:"+Arrays.toString(arr));
//第二次排序
index = 1;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第二次比较完后的数组为:"+Arrays.toString(arr));
//第三次排序
index = 2;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第三次比较完后的数组为:"+Arrays.toString(arr));
//第四次排序
index = 3;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第四次比较完后的数组为:"+Arrays.toString(arr));
}
}
控制台打印:
最终用选择排序的代码:
import java.util.Arrays;
/**
* Created by i_science on ${date}
*/
public class Test001 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("没有排序时的数组为:"+Arrays.toString(arr));
//第一次排序
selectSort1(arr);
System.out.println("最终的数组为:"+Arrays.toString(arr));
System.out.println("------使用选择排序的方法对数组排序--------");
selectSort2(arr);
}
/**
* 选中排序推倒过程
*/
public static void selectSort1(int[] arr){
//第一次排序
int index = 0;//代表第一个元素的索引
for(int i = 1+index;i<arr.length;i++){
if(arr[i] < arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第一次比较完后的数组为:"+Arrays.toString(arr));
//第二次排序
index = 1;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第二次比较完后的数组为:"+Arrays.toString(arr));
//第三次排序
index = 2;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第三次比较完后的数组为:"+Arrays.toString(arr));
//第四次排序
index = 3;
for(int i = 1+index;i<arr.length;i++){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
System.out.println("第四次比较完后的数组为:"+Arrays.toString(arr));
}
/**
* 选择排序
*/
public static void selectSort2(int[] arr){
for(int index = 0;index<arr.length-1;++index){
for(int i = 1+index;i<arr.length;++i){
if(arr[i]<arr[index]){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
System.out.println("选择排序完成排序功能后的数组为:"+Arrays.toString(arr));
}
}