主要思想:
每次找一个最小值。
Java
public class Select {
public static void main(String[] args) {
int[] array = new int[]{2, 3, 5, 8, 9, 0, 7, 5, 1, 6, 8, 7};
sort(array);
System.out.println(Arrays.toString(array));
}
private static void sort(int[] array) {
int n = array.length;
for (int i = 0; i < n-1; i++) {
int min = i;
for (int j = i+1; j < n; j++) {
if (array[j] < array[min]) min = j;
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
}
C
void SelectSortArray() {
int min_index;
for(int i=0;i<n-1;i++) {
min_index=i;
for(int j=i+1;j<n;j++)//每次扫描选择最小项
if(arr[j]<arr[min_index]) min_index=j;
//找到最小项交换,即将这一项移到列表中的正确位置
if(min_index!=i) {
int temp;
temp=arr[i]; arr[i]=arr[min_index]; arr[min_index]=temp;
}
}
}
最好和最坏情况
效率都是O(n²),适用于排序小的列表