冒泡排序算法JAVA实现版
2021-02-02 16:14
标签:最大的 内容 数列 最低版本 元素 for exchange 最大 对比 冒泡排序算法JAVA实现版 标签:最大的 内容 数列 最低版本 元素 for exchange 最大 对比 原文地址:https://www.cnblogs.com/zhangfengshi/p/12808032.html/**
*关于冒泡排序,从性能最低版本实现到性能最优版本实现
*/
public class BubbleSortDemo {
public static void sort(int array[]) {
for (int i = 0; i ) {
//通过前面和后面对比,进行两两比对,复杂度是O(n2)
for (int j = 0; j ) {
int temp = 0;
if (array[j] > array[j + 1]) {
//先临时存放左边最大的值
temp = array[j];
//把小的内容移动到左边
array[j] = array[j + 1];
//将左边最大的值往右移动一位
array[j + 1] = temp;
}
}
}
}
public static void sortV2(int array[]) {
for (int i = 0; i ) {
//有序标记,每一轮的初始值都是true
boolean isSorted = true;
for (int j = 0; j ) {
int temp = 0;
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//因为有元素进行交互,所以不是有序的,标记变为false
isSorted = false;
}
}
if (isSorted) {
break;
}
}
}
public static void sortV3(int array[]) {
//记录最后一次交换的位置
int lastExchangeIndex = 0;
//无序数列的边界,每次比较只需要比到这里就可以了
int sortBorder = array.length - 1;
for (int i = 0; i ) {
//有序标记,每一轮的初始值都是true
boolean isSorted = true;
for (int j = 0; j ) {
int temp = 0;
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//因为有元素进行交互,所以不是有序的,标记变为false
isSorted = false;
//更新为最后一次交换元素的位置
lastExchangeIndex = j;
}
}
sortBorder = lastExchangeIndex;
if (isSorted) {
break;
}
}
}
public static void main(String[] args) {
// int[] array = new int[]{5, 8, 6, 3, 9, 2, 1, 7};
int[] array = new int[]{2, 1, 3, 4, 5, 6, 7, 8};
// sort(array);
sortV3(array);
System.out.println(Arrays.toString(array));
}
}
下一篇:LRU算法的简易实现