linux公社 java算法_常用算法Java实现之冒泡排序

常见的算法有非常多,今天我们就一起看看常见的算法之冒泡排序。

冒泡排序的主要核心思想就是:

比较相邻两个元素,如果前一个元素的值比后一个元素的值大,则进行交换,经过对每个元素的比较,最后将最大的元素设置成最后一个元素,循环重复该操作,最后形成从小到大排序。

下面来看看我们的实例代码:

1、准备我们的数组

2、准备数组的常用操作方法

3、编写冒泡排序算法

4、测试冒泡排序算法的正确性;

package com.linuxmi.ch02;

/**

•@author Administrator

•冒泡排序的实现

*/

public class BubbleArray {

//数组

private long[] arr = null;

//数组中有效数据的大小

private int elems;

public BubbleArray() {

arr = new long[50];

}

public BubbleArray(int length){

arr = new long[length];

}

/**

◦插入数据的操作

◦@param value

*/

public void insert(long value){

arr[elems] = value;

elems++;

}

/**

◦查找指定的数据,如果能够查找到则返回数组的坐标,否则返回-1.

◦@param value

◦@return

*/

public int find(long value){

int i = 0;

for(i=0;i

if(value==arr[i])

break;

}

if(i >(elems-1)){

return -1;

}

return i;

}

/***

◦删除数据的操作,删除成功返回true,删除失败返回false

◦@param value

*/

public boolean delete(long value){

int key = find(value);

if(key == -1){

System.out.println("删除数据失败,未查找到要删除的数据");

return false;

}

for (int i = key; i < elems; i++) {

arr[i] = arr[i+1];

}

elems--;

return true;

}

/***

◦@param oldValue

◦@param newValue

◦@return 如果修改成功返回true,修改失败返回false

*/

public boolean changeValue(long oldValue,long newValue){

int key = find(oldValue);

if(key == -1){

System.out.println("需要修改的数据不存在,修改失败");

return false;

}

arr[key] = newValue;

return true;

}

/**

◦实现冒泡排序的算法

◦该方法中的i表示的是冒泡排序的比较次数

◦该方法中的j表示的是冒泡排序的两两的比较次数,至于j

◦否则就数组越界了

*/

public void bubbleSort(){

for (int i = 0; i < elems-1; i++) {

for (int j = 0; j < elems-i-1; j++) {

if(arr[j]>arr[j+1]){

long tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

}

}

}

/**

◦该方法主要是变量数组并显示

*/

public void disPlay(){

for (int i = 0; i < elems; i++) {

System.out.print(arr[i]+ " " );

}

System.out.println();

}

}

测试代码如下:

package com.linuxmi.ch02;

public class TestBubbleMain {

public static void main(String[] args) {

BubbleArray bubbleArray = new BubbleArray();

bubbleArray.insert(10);

bubbleArray.insert(50);

bubbleArray.insert(80);

bubbleArray.insert(2);

bubbleArray.insert(5);

bubbleArray.disPlay();

bubbleArray.bubbleSort();

System.out.println("冒泡排序后的数据如下:");

bubbleArray.disPlay();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值