排序原理:
①每一次遍历待排序数据时,都假定第一个索引处的值为最小值,然后将它依次和其他索引位置数据进行比较,若假定最小值大于其他某个待排序元素值,则更换假定的最小值,直到遍历结束,得到全部待排序数据的最小值。
②将真正的最小值与第一个元素交换位置。待排序元素减少一个。
时间复杂度:
最好情况:O(n^2)
最坏情况:O(n^2)
平均情况:O(n^2)
空间复杂度:
O(1)
稳定性:
不稳定
实现:
API设计:
①主排序算法用于排序
public static void sort(int[] a)
② 比较API,用于比较两个元素大小
private static boolean greater(int[] a,int v,int w)
③交换API,用于交换两个索引位置的值
private static void exchange(int[] a,int i,int j)
API实现:
//主排序算法用于排序
public static void sort(int[] a) {
for(int i = 0;i < a.length-2;i++) {
//初始假定i为本次比较最小值
int minIndex = i;
for(int j = i+ 1;j < a.length - 1;j ++) {
if(greater(a,i,j)) {
minIndex = j;
}
}
exchange(a,i,minIndex);
}
}
//比较API,用于比较两个元素大小
private static boolean greater(int[] a,int v,int w) {
if(a[v]>a[w]) {
return true;
}
return false;
}
//交换API,用于交换两个索引位置的值
private static void exchange(int[] a,int i,int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
网友评论