浅析java双向冒泡排序算法
投稿:hebedich
这篇文章主要介绍了浅析java双向冒泡排序算法,并附上源码,需要的朋友可以参考下
以整数升序排序为例来简单说明一下双向冒泡排序的过程:首先从前往后把最大数移到最后,然后反过来从后往前把最小的一个数移动到数组最前面,这一过程就是第一轮,然后重复这一过程,最终就会把整个数组从小到大排列好。双向冒泡排序要稍微优于传统的冒泡排序,因为双向排序时数组的两头都排序好了,我们只需要处理数组的中间部分即可,而单向即传统的冒泡排序只有尾部的元素是排好序的,这时每轮处理都需要从头一直处理到已经排好序元素的前面一个元素。虽然它在效率上有了点改进,但它也不能大幅度提高其排序的效率,这是由冒泡排序的基本过程所决定了的。在此基础上改进了一下,下面的代码可以实现对奇数偶数分别排序
双向冒泡排序源代码:
复制代码 代码如下:
package com.zc.manythread;
import java.util.Random;
/**
* 双向冒泡排序
* @author 偶my耶
*
*/
public class BBSort {
//双向冒泡算法,极大的减少了循环排序的次数
public int[] sort(int[] a)throws Exception{
int j;
int limit=a.length;
int st=-1;
while(st<limit){
//必须要给st和limit赋值,否则若数组一开始就有序
st++;
limit--;
boolean swapped=false;
//第一次循环将最大的值放到末尾
for (j = st ; j < limit; j++) {
if (a[j]>a[j+1]) {
int T=a[j];
a[j]=a[j+1];
a[j+1]=T;
swapped=true;
}
}
if (!swapped) {
return a;
}else {
swapped=false;
//第二次循环将最小的值放到了开头
for (j = limit; --j>=st;) {
if(a[j]>a[j+1]){
int T=a[j];
a[j]=a[j+1];
a[j+1]=T;
swapped=true;
}
}
if (!swapped) {
return a;
}
}
}
return a;
}
private static int[] createDate(int count) {
/**
* 无重复数组
*/
int[] data=new int[count];
Random rand = new Random();
boolean[] bool = new boolean[100];
int num = 0;
for (int i = 0; i < count; i++) {
do {
// 如果产生的数相同继续循环
num = rand.nextInt(100);
} while (bool[num]);
bool[num] = true;
/* list.add(num);*///list 列表
data[i]=num;
}
return data;
}
public static void main(String[] args) {
final int count=10;
int[] data=createDate(count);
for(int n : data){
System.out.print(n+"\t");
}
System.out.println();
BSrot bsrot=new BSrot(data);
try {
int[] a=bsrot.sort(data);
for(int n : a){
System.out.print(n+"\t");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
您可能感兴趣的文章:
- Java数据结构和算法之冒泡排序(动力节点Java学院整理)
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- Java实现冒泡排序算法及对其的简单优化示例
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- java数据结构与算法之希尔排序详解
- java数据结构与算法之插入排序详解
- java数据结构与算法之桶排序实现方法详解
- Java数据结构与算法之选择排序(动力节点java学院整理)
- java数据结构与算法之奇偶排序算法完整示例
- Java数据结构及算法实例:选择排序 Selection Sort
- java数据结构与算法之冒泡排序详解