手机
当前位置:查字典教程网 >编程开发 >Java >浅析java双向冒泡排序算法
浅析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双向冒泡排序算法1

【浅析java双向冒泡排序算法】相关文章:

Java直接插入排序算法实现

java开发之内部类的用法

Java实现几种常见排序算法代码

十种JAVA排序算法实例

Java实现快速排序算法(Quicktsort)

深入Java冒泡排序与选择排序的区别详解

Java 位图法排序的使用方法

使用java获取md5值的两种方法

java异或加密算法

Java 完美判断中文字符的方法

精品推荐
分类导航