——将Comparable对象的数组从小到大排序的类
时间效率:O(n2)
package algorithmData;
/**使用选择排序法对数组进行排序的类。
* 将Comparable对象的数组从小到大排序的类
*/
public class SortArray {
/**Task:将数组中前n个对象,按照升序排列
* @param a Comparable对象的数组
* @param n 大于0的整数
*/
public static <T extends Comparable <? super T>> void selectionSort(T[] a,int n){
for (int index = 0; index < n - 1; index++) {
int indexOfNextSmallest = getIndexOfSmallest(a ,index,n-1);
swap(a,index,indexOfNextSmallest);
}
}
/**Task:在数组的一部分中找到最小值得索引
* @param a Comparable对象的数组
* @param first 大于等于0且小于a.length的整数,是待考察的第一个数组元素的索引
* @param last 大于等于first且小于a.length的整数,是待考察的最后一个数组元素的索引
* @return 返回a中最小元素的索引
*/
private static <T extends Comparable <? super T>> int getIndexOfSmallest(T[] a,int first,int last){
T min = a[first];
int indexOfMin = first;
for (int index = first + 1; index <= last; index++) {
if(a[index].compareTo(min)<0){
min = a[index];
indexOfMin = index;
}
}
return indexOfMin;
}
/**Task:交换数组元素a[i]与a[j]
* @param a 对象的数组
* @param i i>=0 且< a.length的整数
* @param j j>=0 且< a.length的整数
*/
private static void swap(Object[] a,int i, int j){
Object temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
测试:
public static void main(String args []){
Integer[] integer= new Integer []{9,6,2,4,8};
SortArray.selectionSort(integer,5);
for (int i = 0; i < integer.length; i++) {
int j = integer[i].intValue();
System.out.print(j);
}
}
结果输出: