/**
* 排序函数,可以按从小到大,标志true;也从大到小标志false
*/
void SelectSort(String st[],boolean flagBigorSmall) {
int i, j, min, max;
int n=st.length;
String tmp;
for (i = 0; i < n / 2; i++) {
int ii = i + 1;
// 做不超过n/2趟选择排序
min = i;
max = i; // 分别记录最大和最小关键字记录位置
for (j = i + 1; j < n - i; j++) {
if(st[j]==null) break;
if (Integer.parseInt(st[j]) > Integer.parseInt(st[max])) {
max = j;
continue;
}
if (Integer.parseInt(st[j]) < Integer.parseInt(st[min]) ) {
min = j;
}
}
// 该交换操作还可分情况讨论以提高效率
if(flagBigorSmall){
if(min==(n-ii)){//最小的在最后一位
tmp = st[i];st[i] = st[min]; st[min] = tmp;
if(min!=(n-1-max)){tmp = st[n - ii];st[n - ii] = st[max]; st[max] = tmp;} ;
}else{
tmp = st[n - ii];st[n - ii] = st[max]; st[max] = tmp;
tmp = st[i];st[i] = st[min]; st[min] = tmp;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载