嘿;)总结一下排序
用蛮力法实现排序,有选择排序,冒泡排序。
1.选择排序:扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素放到它的有序表中的最终位置上。然后从第二个元素开始扫描列表,直到找到最后n-1个元素中的最小元素。
for (int i = 0; i < a.length; i++) {
int min = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
if (min != i) {
int temp =a[min];
a[min] = a[i];
a[i] = temp;
}
}
选择排序是一个O(n^2)的算法。键的交换次数是O(n),准确说是n-1次。
2.冒泡排序:比较表中相邻的元素,如果它们是逆序的话,交换它们的位置。重复多次把最大的元素沉到列表的最后一个位置。第二遍操作将第二大元素沉下去。一直到n-1遍。
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-i-1; j++) {
if (a[j+1] < a[j]) {
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
对于所有规模为n的数组来说,冒泡排序版本的键值比较次数相同是O(n^2),键交换的次数取决特定输入,最坏的情况是遇到降序的数组,此时键交换次数和键比较次数相同。