问题描述
考虑对数组中的n个数进行排序的问题,首先找出n个数中的最小元素,并将其与A[1]中的元素进行互换,接着找出A中的次最小元素,与A[2],中的元素进行互换,对A中的头n-1个元素进行这个过程
public static void main(String[] args) {
int[] s = {3, 2, 4, 5, 7, 6, 1};
sort(s);
print(s);
}
private static void print(int[] s){
for (int i = 0; i < s.length; i++) {
if(i == 0){
System.out.print("{");
}
System.out.print(s[i]);
if(i < s.length -1){
System.out.print(",");
}
if(i == s.length -1){
System.out.print("}\n");
}
}
}
private static int[] sort(int[] s){
for (int j = 0; j < s.length-1; j++) {
int min = s[j];
int po = j;
for (int i = j; i < s.length; i++) {
if(s[i] < min ){
po = i;
}
}
s[j] = s[po];
s[po] = min;
}
return s;
}
执行过程
- 找到数组中的最小值,与第一个位置互换,1,2,4,5,7,6,3
- 找到s[2…n]中的最小值,与第二个互换位置,1,2,4,5,7,6,3
- 依次类推
- 直到s[n-1,n]排完,只剩一个数无需再排,所以输出数组
注意事项
- 只需排序n-1次即可
- 当找到最小值的时候只需记录下下标即可,减省运行时间
- 最后替换位置,
- min用于记录最小值和初始值