选择排序的原理:
外层循环确定最小值位置i;
内层循环确定i+1以后的最小数和i比较;
相应代码:
public class XuanZe {
public static void main(String[] args) {
int [] nums = {-23,23,14,56,89,102,234};
int len = nums.length;
for(int i = 0; i<len ;i++) {
//num[i]放最小值[i,len-1]
int min = nums [i];
int index = i;
for (int j=i+1;j<len;j++) {
if(nums[i]>nums[j]) {
min=num[j];
index=j;
}
}
//交换min对应的位置上的值和i位置上的值交换
if(index!=i) {
int temp = nums[i];
nums[i]=nums[index];
nums[index]=temp;
}
}
for (int i : nums) {
System.out.print(i+" ");
}
}
}
优化后代码:
public class XuanZe {
public static void main(String[] args) {
int [] nums = {-23,23,14,56,89,102,234};
int len = nums.length;
for(int i = 0; i<len ;i++) {
//num[i]放最小值[i,len-1]
//int min = nums [i];
int index = i;
for (int j=i+1;j<len;j++) {
if(nums[index]>nums[j]) {
//min=num[j];
index=j;
}
}
//交换min对应的位置上的值和i位置上的值交换
if(index!=i) {
int temp = nums[i];
nums[i]=nums[index];
nums[index]=temp;
}
}
for (int i : nums) {
System.out.print(i+" ");
}
}
}