`
shenjichao2009
  • 浏览: 94431 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java选择排序(升序和降序)

    博客分类:
  • Java
阅读更多

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



 

/** 选择降序排序 **/  
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]);  
}  
}  

 运行结果如下:



 
注意:

1、选择排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N-1<N,其中N代表需要比较的数的个数;

2、选择排序不稳定

  • 大小: 33.6 KB
  • 大小: 11.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics