选择排序是简单排序的一种,其排序思想为:首先将第一个数标记为最大数,其位置为最大数的位置;然后排除第一个数,使用第一个数和剩下的数依次比较,若剩下的数大于第一个数,则继续比较,直到找到最大数为止;最后判断实际最大数的位置是否就是默认最大数的位置,若不是,则用第一个数的位置和最大数的位置进行交换,则此时第一个数就是实际最大数。以此类推,比较剩下的数,得到降序排列;反之为升序排列。


前期准备工作(包括相关工具或所使用的原料等)
双重循环
详细的操作方法或具体步骤
/** 选择降序排序 **/
public static int[] dascSort(int[] param) {
int in, out;
int max;
int temp;
for (out=0; out < param.length; out++) {
// 默认最大数的位置
max=out;
for (in=out + 1; in < param.length; in++) {
if (param[max] < param[in]) {
// 获取最大数的位置
max=in;
}
}
// 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置
if (out !=max) {
temp=param[out];
param[out]=param[max];
param[max]=temp;
}
}
return param;
}
/** 选择升序排序 **/
public static int[] ascSort(int[] param) {
int in, out;
int max;
int temp;
for (out=param.length - 1; out > 0; out--) {
// 默认最大数的位置
max=out;
for (in=out - 1; in > 0; in--) {
if (param[max] < param[in]) {
max=in;
}
}
// 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置
if (out !=max) {
temp=param[out];
param[out]=param[max];
param[max]=temp;
}
}
return param;
}
执行升序和降序方法:
public static void main(String[] args) {
int[] param={ 1, 6, 7, 5 };
param=ascSort(param);
System.out.print("升序结果为:");
for (int i=0; i < param.length; i++) {
System.out.print(param[i]);
}
System.out.println("");
param=dascSort(param);
System.out.print("降序结果为:");
for (int i=0; i < param.length; i++) {
System.out.print(param[i]);
}
}
运行结果如下:

注意事项
选择排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N-1 选择排序不稳定
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
