排序之:升级版的冒泡排序

冒泡排序是一种基础的算法排序

普通的冒泡排序就是相邻两个元素进行比较,符合条件进行交换,每一轮比较找出最大值或是最小值,其复杂度为n的平方

int arr[]={23,12,46,24,76};
// 冒泡排序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i; j < arr.length - 1; j++) {
if (arr[j] < arr[j + 1]) {
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
System.out.print("i=" + i + "的第j=" + j + "次交换\t");
for (int d = 0; d < arr.length; d++) {
System.out.print(arr[d] + "\t");
}
System.out.println();
}
}

升级版的冒泡排序,定义一个boolean变量,当没有需要交换时,就跳出循环,节省了多余的比较次数;

int array[] = { 23, 12, 46, 24, 87, 65, 18, 14, 43, 434, 65, 76 };
 int length = array.length;
for (boolean sorted = false;  sorted = !sorted; length --) {
for (int i = 1; i < length; i++) {
if (array[i-1] > array[i]) {
int a = array[i-1];
array[i-1] = array[i];
array[i] = a;
sorted = false;
}
}
}

 

猜你喜欢

转载自blog.csdn.net/liu15835467265liu/article/details/79124024