还是来自之前教程视频中的选择排序这节。即给一数组从小到大排序
先贴上老师的代码`package Sorting;
import java.util.Arrays;
public class Selectsorting {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] s = new int[] {101,34,119,1,-1,90,123};
selectsort(s);
System.out.println(Arrays.toString(s));
}
public static void selectsort(int[] ls) {
int min = 0;
int minsize = 0;
boolean flag = false;//优化时增加标识符,判断是否发生交换
for(int i = 0 ; i<ls.length-1;i++) {
min = ls[i];
minsize = i ;
//先遍历找到最小元素和其下标,记录
for(int j = i+1;j<ls.length;j++) {//注意j的定义和上届
if(min>ls[j]) {
min = ls[j];
minsize = j;
flag = true;
}
}
**//优化代码**
// if(!flag) {
// break;
// }else {
// flag = false;
// }
//换下表和元素
int temp= ls[i];
ls[i] = min;
ls[minsize] = temp;
System.out.println("第"+ i+"此交换");
System.out.println(Arrays.toString(ls));
}
}
}
`
原数组为{101,34,119,1,-1,90,123}
运行代码后(发现在第三次后代码已经从小大到达排好)
将优化代码添加后运行