直接选择排序

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
public void sort(int l, int r){
int min;
for (int i = l; i < r; i++) {
min = i;
for (int j = i+1; j <=r; j++) {
if(data[min]>data[j]){
min = j;
}
}
swap(i,min);
System.out.println(Arrays.toString(data));
}
}

每次选出最小和最大的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void sort(int l, int r){
int max;
int min;
while (l<r){
max = r;
min = l;
if(data[l]>data[r]){
swap(r,l);
}
for (int i = l+1; i <r ; i++) {
if(data[max]<data[i]){
max = i;
}
if(data[min]>data[i]){
min = i;
}
}
swap(l,min);
swap(r,max);
l++;
r--;
System.out.println(Arrays.toString(data));
}
}

选择排序是不稳定的,考虑 5 5* 3 ,第一次就变成 3 5* 5,5 到了 5*后面,

------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
itingyu 微信打赏 微信打赏