算法设计:
选择排序算法是在线性表中找到最小的元素,并将其与第一个元素交换,然后在剩余的线性表在找到最小的元素,将其与剩余的线性表的第一个元素交换,一直重复直到线性表只剩下一个元素为止 算法时间复杂度为 O(n^2)
算法时间复杂度分析:
对于第一次迭代,比较次数为n-1,第二次为n-2,依次类推,选择排序的时间复杂度
T(n)=(n-1)+c+(n-2)+c+....+2+c+1+c
=O(n^2)
算法实现:
public class SelectSort {
public static void main(String[] args) {
int[] list = { 2, 3, 2, 5, 6, 1, -2, 3, 14, 12 };
selectSort(list, 0);
System.out.print("{2,3,2,5,6,1,-2,3,14,12}" + " 排序后: {");
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + ",");
}
System.out.println("}");
}
public static void selectSort(int[] list, int first) {
if (first < list.length) {
int min = list[first];
for (int i = first; i < list.length; i++) {
if (list[i] < min) {
int temp = min;
min = list[i];
list[i] = temp;
}
}
list[first] = min;
first++;
selectSort(list, first);
}
}
}