方法很多
下面这种快速选择排序比上面的快一半
public void selectSort(int[] array, String sortType) {
/**
* 选择排序(sortType排序类型esc顺序desc倒序) 比较次数O(n^2) n^2/2 交换次数O(n),n
*/
if (sortType.equals("esc")) {
for (int i = 0; i < array.length - 1; i++) {
int minPos = minmumPosition(i);
swap(minPos, i);
}
} else if (sortType.equals("desc")) {
for (int i = 0; i < array.length - 1; i++) {
int maxPos = maxmumPosition(i);
swap(maxPos, i);
}
} else {
System.out.println("输入类型有误");
}
}
public void swap(int a, int b) {
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
public int minmumPosition(int from) {
// 最小元素
int minPos = from;
for (int i = from + 1; i < array.length; i++) {
if (array[i] < array[minPos])
minPos = i;
}
return minPos;
}
public int maxmumPosition(int from) {
// 最大元素
int maxPos = from;
for (int i = from + 1; i < array.length; i++)
if (array[i] > array[maxPos])
maxPos = i;
return maxPos;
}
可以设值n的值,是比较的个数,用的冒泡排序法import java.util.*;public class Sort {public static void main(String[] args){
Scanner scanf=new Scanner(System.in);
int n=3; //比较的个数
int[] a=new int[n];
System.out.println("请输入"+n+"个整数");
for(int i=0;i
}
for(int i=1;i
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
System.out.println("从大到小排列:");
for(int i=0;i
}
}
}