改进的冒泡排序
2017-08-28 20:50
253 查看
传统的冒泡是从左到右冒泡,改进为两边同时冒泡,边界值做标记当left>right时排序终止。
public class MyMain {
public static void main(String[] args) {
int a[] = { 3, 21, 1, 4, 7, 6, 9, 11, 22, 43, 56, 78,0,-1 };
int len = a.length;
int left = 0;
int right = a.length - 1;
for (int i = 0; i < len; i++) {
int r = len - i - 1;
int l = i;
if (l < r) {
for (int j = 0, k = len - i - 1; k > i && j < len - i - 1; j++, k--) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
if (a[k - 1] > a[k]) {
int tt = a[k - 1];
a[k - 1] = a[k];
a[k] = tt;
}
}
}
}
for (int i = 0; i < len; i++)
System.out.print(a[i] + ",");
}
}
public class MyMain {
public static void main(String[] args) {
int a[] = { 3, 21, 1, 4, 7, 6, 9, 11, 22, 43, 56, 78,0,-1 };
int len = a.length;
int left = 0;
int right = a.length - 1;
for (int i = 0; i < len; i++) {
int r = len - i - 1;
int l = i;
if (l < r) {
for (int j = 0, k = len - i - 1; k > i && j < len - i - 1; j++, k--) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
if (a[k - 1] > a[k]) {
int tt = a[k - 1];
a[k - 1] = a[k];
a[k] = tt;
}
}
}
}
for (int i = 0; i < len; i++)
System.out.print(a[i] + ",");
}
}
相关文章推荐
- 冒泡排序的算法分析与改进
- 基础算法之排序(1)--冒泡排序 改进
- 数据结构——改进的冒泡排序(c++)
- 冒泡排序--改进
- 改进的冒泡排序
- 复习一下冒泡排序和其改进
- 冒泡排序的改进:鸡尾酒排序
- C语言排序算法之冒泡排序实现方法【改进版】
- 常用排序算法--冒泡排序及改进和插入排序时间复杂度分析
- 冒泡排序的改进(Modified_Bubble_Sort)
- 冒泡排序的改进:一次同时冒一个大泡,一个小泡
- 笔试,面试,C/C++,数据结构单链表排序(改进冒泡排序)
- 冒泡排序改进版(java)
- 冒泡排序及其改进算法
- Java 冒泡排序及改进
- 冒泡排序和改进的冒泡排序的性能差距
- 排序算法(一)——冒泡排序及改进
- 排序(二)——冒泡排序及其改进
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 冒泡排序及改进