1.概念:什么是稳定排序和非稳定性排序?
相同元素排序中之后,顺序和之前的顺序一样,则为稳定排序,否则为非稳定性排序。道听途说,不足为惧。都是抄的,天下文章一大抄,先抄了再说。
2. 冒泡排序代码实现
2.1 普通版本
public static void sort1(int arr[]) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
int item = 0;
if(arr[j]>arr[j+1]) {
item = arr[j];
arr[j] = arr[j+1];
arr[j+1] = item;
}
}
}
}
2.2 优化版本 某一步之后,后面的代码有序了,后面的代码就不排序了。
public static void sort2(int arr[]) {
for (int i = 0; i < arr.length; i++) {
boolean iscontinue = true;
for (int j = 0; j < arr.length-i-1; j++) {
int item = 0;
if(arr[j]>arr[j+1]) {
item = arr[j];
arr[j] = arr[j+1];
arr[j+1] = item;
iscontinue = false;
}
}
if(iscontinue) {
break;
}
}
}
2.3 优化版2
public static void sort3(int arr[]) {
int sortborder = arr.length-1;//表示比较的边界
int lastcomindex = 0; //最后一次比较的位置
for (int i = 0; i < arr.length; i++) {
boolean iscontinue = true;
for (int j = 0; j < sortborder; j++) {
int item = 0;
if(arr[j]>arr[j+1]) {
item = arr[j];
arr[j] = arr[j+1];
arr[j+1] = item;
iscontinue = false;
lastcomindex = j;
}
}
sortborder = lastcomindex;
if(iscontinue) {
break;
}
}
}
第三个我觉得还是很nb。