java常见数据算法_冒泡排序
常见的算法有非常多,今天我们就一起看看常见的算法之冒泡排序。
冒泡排序的主要核心思想就是:
比较相邻两个元素,如果前一个元素的值比后一个元素的值大,则进行交换,经过对每个元素的比较,最后将最大的元素设置成最后一个元素,循环重复该操作,最后形成从小到大排序。
下面来看看我们的实例代码:1、准备我们的数组2、准备数组的常用操作方法3、编写冒泡排序算法4、测试冒泡排序算法的正确性;package com.zcp.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<elems;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<elems-i-1,为什么要减1,主要是下面两两比较的时候需要j+1,
否则就数组越界了
*/
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.zcp.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();
}
}
转载于:https://blog.51cto.com/7298246/2154933
java常见数据算法_冒泡排序相关推荐
- Java常见GC算法_垃圾收集器及内存分配_G1垃圾收集器
常见GC算法 引用计数法: 每个对象都有一个计数器, 对象被引用一次, 计数器+1, 当对象引用失败一次. 计数器-1, 当对象计数器等于0, 说明对象没有被应用, 就可GC 优: 运行过程中, 可随 ...
- Java常见排序算法之插入排序
一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...
- Java常见排序算法
Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html
- java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析
0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...
- java 哈希算法_选择Java密码算法第1部分-哈希
java 哈希算法 抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥 ...
- 两个for做数据插入_冒泡排序、选择排序、插入排序
排序算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间非比较类排序:不 ...
- 常见排序算法:冒泡排序
为什么80%的码农都做不了架构师?>>> 从这篇文章开始,我会陆陆续续将我所能用Java实现的算法在这里简单做个梳理,也算温故而知新吧.受个人水平和时间限制,可能会有错漏,欢迎 ...
- java常见性能优化_十大最常见的Java性能问题
java常见性能优化 Java性能是所有Java应用程序开发人员都关心的问题,因为快速使应用程序与使其正常运行同等重要. 史蒂文·海恩斯(Steven Haines)使用他在Java性能问题上的个人经 ...
- 常见排序算法_解释的算法-它们是什么以及常见的排序算法
常见排序算法 In its most basic form, an algorithm is a set of detailed step-by-step instructions to comple ...
最新文章
- Python3 网络编程(转载)
- zabbix监控apache
- console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章
- python3-Anaconda3 基本使用
- 如何提高微信公众号流量主收入
- python与excel-超简单:用Python让Excel飞起来
- firefox与ie的javascript兼容性编程汇编【转载】
- (11)机器学习_Kmeans聚类算法
- 代码检测vc2013环境是否已经安装了
- Android Studio查看Android源码
- linux下pcie串口卡驱动安装,pci串口卡万能驱动
- 【原版教材•中英对照】密度泛函理论的化学家指南(第二版)— 传统量子力学的化学家们将从这篇得到特别的启发
- mysql中添加字段
- ai背景合成_AI突破次元壁又火了!《飞屋环游记》动漫角色一秒变真人,网友:小罗的“猫王发型”有点酷...
- [深入理解Android卷二 全文-第四章]深入理解PackageManagerService
- 走进C 语言:你知道C语言程序是如何执行的吗?
- 如何mp3音乐格式转换成ogg格式
- Hadoop分布式集群搭建以及案例运行-fs操作
- matplotlib简单做图
- Matplotlib输出中文显示问题